私は継承、ポリモーフィズム、カプセル化を大量に使用していますが、オブジェクトのスコープと変数の次の動作についてはわかりませんでした。だから私は、変数は変更は方法の範囲には限定されているメソッドに渡されたときと考えC#変数のスコープとメソッドにパラメータ化されたときのオブジェクト
public class Obj
{
public string sss {get; set;}
public Obj()
{
sss = "0";
}
}
public partial class testScope : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Obj a = new Obj();
String sss = "0";
Context.Response.Write(sss); // 0
FlipString(sss);
FlipString(a.sss);
Context.Response.Write(sss + a.sss); // 0 0
FlipObject(a);
Context.Response.Write(a.sss); // 1
Context.Response.End();
}
public void FlipString(string str)
{ str = "1"; }
public void FlipObject(Obj str)
{ str.sss = "1"; }
}
:違いは、コードで最もよく示されています。しかし、オブジェクトがメソッドに渡されてそのプロパティに変更が加えられた場合、メソッドを超えて拡張されているように見えます。
この動作がオブジェクトと変数ではなく、.netですべてのオブジェクト、文字列(例のようにSystem.String)であるという規則があった場合、これを受け入れることができます。私はメソッドに渡すパラメータの範囲を予測できますか?
ありがとう、私は最大の担当者のために早くではなく、後でその日に答えを受け入れるようになるでしょう:) – rizzle
LOL:それについては心配しません - 大したことではありません。より良い答えがうまく来るかもしれません。 –
+1の議論があまりにも少ないトピックの言及。 – jro