Sdílet prostřednictvím


CA1819: Vlastnosti by není vrátí matice

Název_typu

PropertiesShouldNotReturnArrays

CheckId

CA1819

Kategorie

Microsoft.Performance

Změnit rozdělení

Rozdělení

Příčina

Veřejné nebo chráněná vlastnost veřejné typu vrátí pole.

Popis pravidla

Vrácený vlastností polí nejsou chráněna proti zápisu, i když je vlastnost pouze pro čtení.Aby osvědčenou pole vlastnost musí vrátit kopii pole.Uživatelé obvykle nebude porozumět výkonu nepříznivé důsledky volání těchto vlastností.Konkrétně mohou využít vlastnost jako indexovaná vlastnost.

Jak vyřešit narušení

Opravit porušení tohoto pravidla, byla vlastnost metoda nebo vlastnost vrátit kolekci změnit.

Při potlačení upozornění

Atributy mohou obsahovat vlastnosti, které vrátí matice, ale nemohou obsahovat vlastnosti, které vracejí kolekcí.Můžete potlačit varování, že je aktivována pro vlastnost atribut, který je odvozen z [System.Attribute] třídy.Jinak Nepotlačovat upozornění od tohoto pravidla.

Příklad narušení

0fss9skc.collapse_all(cs-cz,VS.110).gifDescription

Následující příklad ukazuje vlastnost, která toto pravidlo porušují.

0fss9skc.collapse_all(cs-cz,VS.110).gifKód

Imports System 

Namespace PerformanceLibrary     

    Public Class Book         

        Private _Pages As String()       

        Public Sub New(ByVal pages As String())  
            _Pages = pages        
        End Sub         

        Public ReadOnly Property Pages() As String()            
            Get                
                Return _Pages            
            End Get            
        End Property     

    End Class 

End Namespace
using System; 

namespace PerformanceLibrary
{    
    public class Book    
    {        
        private string[] _Pages;      

        public Book(string[] pages)        
        {            
            _Pages = pages;        
        }         

        public string[] Pages        
        {            
            get { return _Pages; }        
        }    
    }
}

0fss9skc.collapse_all(cs-cz,VS.110).gifKomentáře

Porušení tohoto pravidla stanovit, byla vlastnost metoda nebo vlastnost vrátit kolekci místo pole změnit.

Změňte vlastnost příkladu metoda

0fss9skc.collapse_all(cs-cz,VS.110).gifDescription

Následující příklad řeší porušení změnou vlastnosti metody.

0fss9skc.collapse_all(cs-cz,VS.110).gifKód

Imports System 

Namespace PerformanceLibrary     

    Public Class Book         

        Private _Pages As String()         

        Public Sub New(ByVal pages As String())            
            _Pages = pages        
        End Sub         

        Public Function GetPages() As String()      
            ' Need to return a clone of the array so that consumers            
            ' of this library cannot change its contents            
            Return DirectCast(_Pages.Clone(), String())        
        End Function     

    End Class 

End Namespace
using System; 

namespace PerformanceLibrary
{    
    public class Book    
    {        
        private string[] _Pages;         

        public Book(string[] pages)        
        {            
            _Pages = pages;        
        }         

        public string[] GetPages()        
        {            
            // Need to return a clone of the array so that consumers            
            // of this library cannot change its contents            
            return (string[])_Pages.Clone();        
        }    
    }
}

Vrátí kolekci příklad

0fss9skc.collapse_all(cs-cz,VS.110).gifDescription

Následující příklad řeší porušení změnou vlastnosti vrátit

ReadOnlyCollection.

0fss9skc.collapse_all(cs-cz,VS.110).gifKód

Imports System
Imports System.Collections.ObjectModel 

Namespace PerformanceLibrary     

    Public Class Book         

        Private _Pages As ReadOnlyCollection(Of String)         

        Public Sub New(ByVal pages As String())            
            _Pages = New ReadOnlyCollection(Of String)(pages)        
        End Sub         

        Public ReadOnly Property Pages() As ReadOnlyCollection(Of String)            
            Get                
                Return _Pages            
            End Get        
        End Property     

    End Class 

End Namespace
using System;
using System.Collections.ObjectModel; 

namespace PerformanceLibrary
{    
    public class Book    
    {        
        private ReadOnlyCollection<string> _Pages;         
        public Book(string[] pages)        
        {            
            _Pages = new ReadOnlyCollection<string>(pages);        
        }         

        public ReadOnlyCollection<string> Pages        
        {            
            get { return _Pages; }        
        }    
    }
}

Umožnit uživatelům změnit vlastnost

0fss9skc.collapse_all(cs-cz,VS.110).gifDescription

Můžete umožnit spotřebiteli třídy upravit vlastnost.V následujícím příkladu je vlastnost pro čtení i zápis, která poruší toto pravidlo.

0fss9skc.collapse_all(cs-cz,VS.110).gifKód

Imports System 

Namespace PerformanceLibrary     

    Public Class Book         

        Private _Pages As String()         

        Public Sub New(ByVal pages As String())            
            _Pages = pages        
        End Sub         

        Public Property Pages() As String()            
            Get                
                Return _Pages            
            End Get            

            Set(ByVal value as String())                
                _Pages = value            
            End Set        
        End Property     

    End Class 

End Namespace
using System; 

namespace PerformanceLibrary
{    
    public class Book    
    {        
        private string[] _Pages;         

        public Book(string[] pages)        
        {            
            _Pages = pages;        
        }         

        public string[] Pages        
        {            
            get { return _Pages; }            
            set { _Pages = value; }        
        }    
    }
}

0fss9skc.collapse_all(cs-cz,VS.110).gifKomentáře

Následující příklad řeší porušení změnou vlastnosti vrátit Collection.

0fss9skc.collapse_all(cs-cz,VS.110).gifKód

Imports System
Imports System.Collections.ObjectModel 

Namespace PerformanceLibrary     

    Public Class Book         

        Private _Pages As Collection(Of String)         

        Public Sub New(ByVal pages As String())            
            _Pages = New Collection(Of String)(pages)        
        End Sub         

        Public ReadOnly Property Pages() As Collection(Of String)            
            Get                
                Return _Pages            
            End Get        
        End Property     

    End Class 

End Namespace
using System;
using System.Collections.ObjectModel; 

namespace PerformanceLibrary
{    
    public class Book    
    {        
        private Collection<string> _Pages;         

        public Book(string[] pages)        
        {            
            _Pages = new Collection<string>(pages);        
        }         

        public Collection<string> Pages        
        {            
            get { return _Pages; }        
        }    
    }
}

Souvisejících pravidel

CA1024: Pomocí vlastností, případně