私がしようとすると、エラーで次のメソッドの結果をコンパイルすると、「BC30491式が値を生成しませんが、」:SecureStringのこのVB.NET拡張メソッドで何が問題になっていますか?
<Extension()>
Public Sub FromClearString(ByRef secureString As SecureString, clearString As String)
clearString.ToList().ForEach(Function(c) secureString.AppendChar(c))
secureString.MakeReadOnly()
End Sub
それは私には完全に通常の延長のように思えるが、私は動作しませんVBは非常に頻繁に。何が間違っているのでしょうか?
私はので、それはあると思います'AppendChar()'はvoidで、 'Function(c)'からは何も返しません。 – Crowcoder
'Function(c)'の代わりに 'Sub(c)'を使用 – Slai
あなたは 'ByRef'についての長い誤解の犠牲になっています。 'ByRef'はC#の' ref'と同じです。この場合、あなたはそれを必要とせず、できるだけそれを持ってはいけません。 C#では、C#はExtensionAttributeを拡張メソッドと呼ばれるメソッドには適用しないため、コンパイルされません。明らかに、VBはもっと自由です。拡張メソッド構文は、変数またはフィールドに限らず、左側に式を持つことを意図しています。 –