Skip to content

Instantly share code, notes, and snippets.

@mapserver2007
Last active December 26, 2015 09:29
Show Gist options
  • Save mapserver2007/7130000 to your computer and use it in GitHub Desktop.
Save mapserver2007/7130000 to your computer and use it in GitHub Desktop.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Sandbox
{
public class ReferenceSample
{
public static void Main()
{
SampleBean bean = new SampleBean();
bean.name = "test1";
Console.WriteLine(bean.name);
ChangeValue(bean);
Console.WriteLine(bean.name);
ChangeValue2(bean);
Console.WriteLine(bean.name);
ChangeValue3(ref bean);
Console.WriteLine(bean.name);
}
private static void ChangeValue(SampleBean bean)
{
bean.name = "test2";
}
private static void ChangeValue2(SampleBean bean)
{
// refを付けない場合はJava同様参照の値渡し。
bean = new SampleBean();
}
private static void ChangeValue3(ref SampleBean bean)
{
// C#は参照渡しが可能なので、beanを書き換えると呼び出し元に影響がある。
bean = new SampleBean();
}
}
}
package sandbox;
public class ReferenceSample {
public static void main(String[] args) {
SampleBean bean = new SampleBean();
bean.setName("test1");
changeValue(bean);
System.out.println(bean.getName());
changeValue2(bean);
System.out.println(bean.getName());
}
private static void changeValue(SampleBean bean) {
// beanは値だが、beanのメンバは参照。
// Javaは参照の値渡し。なので、beanのメンバを書き換えたら呼び出し元にも反映される。
bean.setName("test2");
}
private static void changeValue2(SampleBean bean) {
// bean自体は「値」なので、bean自体を書き換えても呼び出し元に変化がない。
bean = new SampleBean();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment