答えて
foreachループの反復変数を変更することはできませんが、反復変数のメンバーを変更することはできます。従ってstudentDTO
が参照型であることを
private void ChangeName(StudentDTO studentDTO)
{
studentDTO.name = SomeName;
}
注にChangeName
方法を変更します。したがって、変更された学生を返す必要はありません。 ChangeName
メソッドが取得するのは、生徒のコピーではなく、ユニークな生徒オブジェクトへの参照です。反復変数とstudentDTOList
は両方とも、メソッドのstudentDTO
パラメータと同じ生徒オブジェクトを参照します。
そして
foreach(StudentDTO student in studentDTOList)
{
ChangeName(student);
}
にループを変更しかし、ChangeName
のような方法が珍しいです。進むべき道は、あなたは、あなたがあなたのことを言うコメントで
foreach(StudentDTO student in studentDTOList)
{
student.Name = SomeName;
}
EDIT
にループを変更することができますプロパティにフィールドをカプセル化する
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
です多くの分野を変えなければならない。その場合は、すべての変更を行うメソッドUpdateStudent
を使用しても構いません。しかし、私はまだプロパティを保持します。
値を渡す以外にプロパティにロジックが追加されていない場合は、自動実装された便利なプロパティで置き換えることができます。
public string Name { get; set; }
この場合、フィールドname
を削除する必要があります。
よろしくお願いします。すでに質問したことがあります... –
だから、すでに参照型の引数を取得しているので、関数から何も返さないでください。 –
はい。生徒を返却しても、戻り値は無視して反復変数に代入しないでください。生徒を返すと、メソッド呼び出しを連鎖させることができます: 'student.UpdateValues()。StoreChanges()。PrintReport();' –
ですので、あなたが実際にとにかくあなたが参照しているオブジェクトを変更していない割り当てることができませんので、あなた:オブジェクトのメンバー値はコードは以下の通りです、
public class StudentDTO
{
string name;
int rollNo;
}
studentDTOList=GetDataFromDatabase();
foreach(StudentDTO student in studentDTOList.ToList())
{
studentDTO=ChangeName(studentDTO); //Not working
}
private StudentDTO ChangeName(StudentDTO studentDTO)
{
studentDTO.name=SomeName;
return studentDTO;
}
エラーがありますちょうど使用することができます:
foreach (StudentDTO student in studentDTOList)
{
student.name = SomeName;
}
や静止メソッドを呼び出します。どちらの場合も
foreach (StudentDTO student in studentDTOList)
{
ChangeStudent(student);
}
を、コードは、反復変数(student
)の値を変更しませんので、それは大丈夫です。
しかし元の例はとにかくコンパイルされません。foreach
ループによって導入された反復変数は読み取り専用です。
はプライベートになります現在のところ+1どちらかの方法 – Sayse
実際には私の元のコードは、その変数から多くの値を変更していますが、平面foreach()とそれは動作していないエラーの例です。 –
@ user2553512: "それはエラーを示しています"は決して十分な情報ではありません。オブジェクト内のデータを大量に変更しても問題ありません。反復変数自体に新しい値を割り当てることはできません。つまり、ChangeStudent(student)を呼び出してデータを変更することができます。単にstudent = ChangeStudent(student)を実行することはできません。 –
- 1. RealmSwiftリストは、文字列は、私はこのような<code>RealmSwift</code>に文字列のリストを持ってしようとしているオブジェクト
- 2. jQueryの、またはそのオプションの1つをクリックすることで、私は、ユーザーがそれにタブ移動し、文字を入力経由して、これを変更した場合伝えることができますどのように私は</p> <pre><code>$('#select').on('change', function (e) { //do things }); </code></pre> <p>のように変更イベントの選択を持っている場合は変更が
- 3. 私のjavascriptのが唯一の私はdiv要素ここ</p> <p>に私のテキストを変更しようとしています、それは
- 4. XML文字列は、私はこの<strong>文字列</strong>まし
- 5. C++、私は私がそれらを分類することができますように、2つの文字列に引用符を抽出しているよ「ジョン」「こんにちは」</p> </blockquote> <p>私は、文字列</p> <blockquote> <p>を持つ文字列
- 6. strip_tagsこんにちは、私はPHP</p> <p>でstrip_tagsを使用して文字列にHTMLタグを許可しようとしています。しかし、私の文字列は「< <」を含んでおり、「>>」と私はそれらを許可しようとしていますPHP
- 7. RxJSは、フィルタは、私は、<code>click</code>イベントをコンソールにしようとしています、そのために私は、この機能を使用しています<code>rxjs</code>に、私は非常に新しい午前フィルタ
- 8. コードの文字列をモジュールのように動作させることは可能ですか?</p> <pre><code>source_string = """ class someClass: def __init__(self): self.s = "some String" def _return_s(self): return self.s """ </code></pre> <p>が、私はモジュールのようなオブジェクトにこの文字列を変えることができます:
- 9. javascriptオブジェクトを逆順にループすることはできますか?</p> <p>私はこのようなループすることができます:
- 10. は、私は1つの文字列に</p> <pre><code>myString.replace("f", "a").trim() </code></pre> <p>を文字に置き換えるために、通常は、このコマンドを使用しますが、私は六角文字列を作成したいこの時間は、私はと<code>f</code>より大きくしているすべての文字を置き換えたい
- 11. Protostuffは、どのように私はProtostuffを使用した例を、以下のようなオブジェクトをシリアル化することができます地図のようなオブジェクト<文字列、地図<文字列、文字列>>
- 12. 私はCに新しいです++私はYIを知らないで</p> <p>感謝を取得していない午前二ループで同じことを印刷することができる午前た場合、私は最初のループ内のすべての文字列を取得する文字列に
- 13. 私はあなたが別の文字列と文字列を掛けることはできませんここでは、テキストボックスに</p> <pre><code>item.SubItems.Add(dr["StockCalulate"].ToString()* txtAmount.Text); </code></pre> <p>を
- 14. は、私はどのように私はプロトタイプを持つ<code>void</code>機能を使用するために<code>main</code>機能を変更することができ疑問に思って、文字列
- 15. 私は</p> <p>Aを戻すには、このコードを使用しようとしている
- 16. AngularJS - 私は<strong>変更</strong>ボタン、私はそれをクリックしたときに、<strong>は(変更)</strong>機能を持ってNGクリック
- 17. "cout"を使用するときに "<<"または "+"を使用して文字列をまとめる
- 18. プログラムで、私は私のUITableViewは、私はコードで、私のカスタムビューのサブビューです<code>UITableView</code>を作成して設定するiOSの9</p> <p>で起動時に色を変更することができませんiOS9
- 19. datetimeのオブジェクト 'date'を別のオブジェクトの 'date'に変更する方法はありますか? (パイソン)私がオブジェクトに別のDATE値</p> <p><em>object_a</em>を与えるためにしようとしている
- 20. Androidはなぜ最初の要素にフォーカスしていますか?デバイス使用のEditTextがSoftInputModeはレイアウトがしかし</p> <p>を変更するような装置がフォーカスを失うことになる、サイズを変更する場合は、使用することはできませんので、場合レイアウトが</p> <p>を変更したときのアクティビティの起動 これはまた起こるとき
- 21. Struts2のは、ここに私のコードの抜粋です私はフォームを送信するjavascript関数を使用していて、JavaScript関数に、私は<code>form.action= "Struts2 url goes here";</code></p> <p>を指定したい文字列
- 22. Paper.js - 私はこの<code>paperscript</code>変更しようとしていますjavascript`
- 23. JQに「\」削除すると、私はどのようにすることができJQ私は文字列として保存したいJSONオブジェクト、上(<a href="https://jqplay.org/" rel="nofollow noreferrer">https://jqplay.org/</a>)変換が、それは常に「\と」置き換え</p> <p>を使用しようとしている
- 24. 変更CONFIG [クライアント側] <p><a href="https://i.stack.imgur.com/qpebc.png" rel="nofollow noreferrer">CONFIG.PNG</a> < -</p> <p><strong>私はそこにそれを変更した場合、それは動作しますが、私はTampermonkeyでそれをやりたい方法Tampermonkeyにコンフィグを変更するには、その仕事とどのようにしていますか?</strong></p>
- 25. イテレータのインデックスはどのように確認できますか?</p> <pre><code>iterator = iter(source) for char in iterator: do stuff </code></pre> <p>は、しかし、今私は私が「H」にイテレータの値を比較<code>do stuff</code>にチェックを持っていることを言う:
- 26. 私はスウィフト3現在の構文のコードに次の行を翻訳したいが、私はこの</p> <p>にコードを変更すると
- 27. JavaScriptのreplace()メソッドのドルは、私が<code>aman/gupta</code>のような文字列を持っていると私は<code>aman$$gupta</code>にそれを交換したいと次のようにそのために私はJavaScriptの<code>replace</code>メソッドを使用しています
- 28. 文字列をクラス名に変換するにはどうしたらいいですか?私は、文字列<code>'TestClass'</code>与えられ、このファイルに<code>TestClass</code>を参照するにはどうすればよい
- 29. はどのように我々はセレン私はセレンを使用して値の下に存在文字列内氏を取得する必要が</p> <p></p> <p>に値セクション内の値を取得できますかセレン
- 30. HTML文字列は、私はHTMLを追加する前に、私は私がそれに変更を加えたい、HTML</p> <pre><code>var myhtml = "<div><a>DEMO</a></div>"; </code></pre> <p>の文字列を含む変数を持つ
いいえ、実際には最初のスニペットでコードを実行できません。反復変数は読み込み専用です。 –
リストのコピーを作成してそのコピーを繰り返し処理する.ToList()のためにできます。 –
いいえ、それはできません。やってみなよ。コード*はコンパイルされません。あなたが本当にそれが信じられるなら、それが失敗するのを見ることを示す短いしかし完全なプログラムを作りなさい。 –