2016-04-21 13 views
8

Bir değer döndüren bir uzantı yöntemim var.Dönüş değeri kullanılmazsa bir uyarı almak mümkün mü?

byte myByte = 3; 
myByte = myByte.SetBit(1, false); 

O: Ben this ve ref birleştirmek gelmediğinden dolayı

public static byte SetBit(this byte b, int bitNumber, bool value) 
{ 
    if (value) 
    { 
     return (byte)(b | (1 << bitNumber)); 
    } 
    return (byte)(b & ~(1 << bitNumber)); 
} 

döndürülen değer tekrar bir değişkene atanması gerekir: Bu durumda bir bayt belirli bir bit belirlesin Ödevi atayarak kolay unutmak. Birisi düşünebilir, yöntem değeri doğrudan değiştirir.

String.Replace için, Resharper?/VisualStudio? Saf yöntemin Dönüş değeri kullanılmadığını, beni uyarıyor:

String

Bunun bir şekilde benim yöntem için de mümkün mü?

+0

yazmak da mümkündür içerir Resharper Annotations

için Nuget Paketi var gibi görünüyor "Döndürülen değerin bir değişkene tekrar atanması gerekiyor, çünkü bunu ve ref'yi birleştiremiyorum" Gerçekten mi? Ben sadece denedim, ve iyi çalıştı ... –

+0

'bu bayt b 'ref on için beni derlemek değil @KirkWoll –

+1

Alternatif olarak, bir [Roslyn Analyzer] (https://github.com/dotnet/roslyn/wiki/ Nasıl Yapılır Yazılır-aC% 23-Analyzer-ve-Code-Fix) - kod tabanınız için belirli modelleri zorlamak için harika bir yoldur. Hatta şirketinize özel projeler için harika - çözümünüze gömülecek şekilde yazabilirsiniz. –

cevap

4

Bu MustUseReturnValueAttribute @Kirk Woll Açıklamalarda belirttiği gibi

[MustUseReturnValue("Use the return value to...")] 
public byte Foo() 
{  
} 

, bir özel Roslyn Analyzer

+1

Benzer şekilde yayınlamak üzereydik, ama aynı şekilde test ettik ve [işte] (http://i.stack.imgur.com/EY7nt.png) tam olarak açıklandığı gibi. ('[MustUseReturnValue]' yerine '[Pure]' yi kullandım, ama aynı şekilde çalıştıklarını varsayalım. –

+2

'[Pure]' ve '[MustUseReturnValue]', çok benzerler. '[MustUseReturnValue]' özel bir mesajın belirtilmesine izin verir, ancak bunun dışında ana fark semantiktir. '[Pure]', yöntemin, nesnenin durumu üzerinde herhangi bir değişiklik yapmadığı anlamına gelir (bu nedenle çağrılmanın tek nedeni dönüş değeridir). '[MustUseReturnValue]' ayrıca dönüş değeri önemlidir ve kullanılmalıdır, ancak nesnenin durumu hakkında herhangi bir garanti vermez. – citizenmatt

İlgili konular