Sdílet prostřednictvím


CA1806: Neignorujte výsledky metody

Název_typu

DoNotIgnoreMethodResults

CheckId

CA1806

Kategorie

Microsoft.Usage

Změnit rozdělení

Bez rozdělení

Příčina

Existuje několik možných důvodů pro toto varování:

  • Nový objekt je vytvořen, ale nikdy použít.

  • Je volána metoda, která vytvoří a vrátí nový řetězec a nový řetězec nikdy použity.

  • COM nebo P/vyvolat metodu, která vrátí hodnotu HRESULT nebo chybový kód, který nikdy použity.Popis pravidla

Vytvoření objektu zbytečné a přidružené uvolnění nevyužitých objektu snížit výkon.

Řetězce jsou neměnné a metody, jako je například String.ToUpper vrátí nové instance řetězec namísto instance string volající metodu úpravy.

Ignorování HRESULT nebo chybový kód může vést k neočekávanému chování chybové podmínky nebo podmínky nedostatku prostředků.

Jak opravit porušení

Pokud metoda a vytvoří novou instanci objektu B, který nikdy použity, předat jako argument jinou metodu instance nebo přiřadit instanci proměnné.Vytvoření objektu je zbytečné, odebrat jej.- nebo -

Pokud metoda a volá metodu B, ale nepoužívá nové instance string, který vrací metoda B.Předat jako argument jinou metodu instance, přiřaďte instanci proměnné.Nebo pokud je nutné odebrat volání.

-nebo-

Metoda vrátí metoda a volá metodu B, ale nepoužívá hodnota HRESULT nebo kód chyby.Výsledek použití podmíněného příkazu, výsledek přiřadit proměnné nebo předat jako argument pro jinou metodu.

Při potlačení upozornění

Pokud při vytvoření objektu slouží některé účelu není potlačí upozornění od tohoto pravidla.

Příklad

Následující příklad ukazuje třídu, která ignoruje výsledkem volání String.Trim.

Následující příklad řeší porušení předchozí podle přiřazení proměnné, kterou byla volána v důsledku String.Trim.

Následující příklad ukazuje metodu, která vytvoří objekt nepoužívá.

[!POZNÁMKA]

Toto narušení nelze reprodukovat v jazyce Visual Basic.

Imports System

Namespace Samples

    Public Class Book

        Private ReadOnly _Title As String 

        Public Sub New(ByVal title As String)

            If title IsNot Nothing Then 
                ' Violates this rule                
                title.Trim()
            End If

            _Title = title

        End Sub 

        Public ReadOnly Property Title() As String 
            Get 
                Return _Title
            End Get 
        End Property 

    End Class 

End Namespace
using System;

namespace Samples
{
    public class Book
    {
        private readonly string _Title;

        public Book(string title)
        {
            if (title != null)
            {
                // Violates this rule                
                title.Trim();
            }

            _Title = title;
        }

        public string Title
        {
            get { return _Title; }
        }
    }
}
using namespace System;

namespace Samples
{
    public ref class Book   
    { 
        private:        
            initonly String^ _Title;

        public:
        Book(String^ title)        
        {               
            if (title != nullptr)            
            {                  
                // Violates this rule                
                title->Trim();            
            }
                _Title = title;        
            }

        property String^ Title        
        {            
            String^ get() { return _Title; }        
        }    
    };
}

Následující příklad řeší porušení předchozí odebráním nepotřebných vytvoření objektu.

Imports System

Namespace Samples

    Public Class Book

        Private ReadOnly _Title As String 

        Public Sub New(ByVal title As String)

            If title IsNot Nothing Then
                title = title.Trim()
            End If

            _Title = title

        End Sub 

        Public ReadOnly Property Title() As String 
            Get 
                Return _Title
            End Get 
        End Property 

    End Class 

End Namespace
using System;

namespace Samples
{
    public class Book
    {
        private readonly string _Title;

        public Book(string title)
        {
            if (title != null)
            {
                title = title.Trim();
            }

            _Title = title;
        }

        public string Title
        {
            get { return _Title; }
        }
    }
}
using namespace System;

namespace Samples
{    
    public ref class Book    
    {    
    private:        
        initonly String^ _Title;

    public:
        Book(String^ title)        
        {               
            if (title != nullptr)            
            {                        
                title = title->Trim();            
            }

            _Title = title;        
        }

        property String^ Title        
        {            
            String^ get() { return _Title; }        
        }    
    };
}

Následující příklad ukazuje způsob, který kód chyby, vrátí metoda nativní funkce GetShortPathName ignoruje.

using System;

namespace Samples
{
    public class Book
    {
        public Book()
        {
        }

        public static Book CreateBook()
        {
            // Violates this rule             
            new Book();
            return new Book();
        }
    }
}
using namespace System;

namespace Samples
{    
    public ref class Book    
    {
    public:
        Book()        
        {        
        }

        static Book^ CreateBook()        
        {
            // Violates this rule             
            gcnew Book();            
            return gcnew Book();        
        }    
    };
}

Následující příklad řeší porušení předchozí kód chyby kontroly a při selhání volání došlo k výjimce.

using System;

namespace Samples
{
    public class Book
    {
        public Book()
        {
        }

        public static Book CreateBook()
        {
            return new Book();
        }
    }
}
using namespace System;

namespace Samples
{
    public ref class Book    
    {
    public:
        Book()        
        {           
        }
        static Book^ CreateBook()        
        {            
            return gcnew Book();        
        }            
    };
}