C#中如何强制引用。

飞翔的薄荷 2015-01-07 07:40:09
int a = 1;
int b = a; //如何强制使用引用
b = 3;

我期待结果a也为3。如何写代码。
...全文
510 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
相思梦 2015-01-18
  • 打赏
  • 举报
回复
byte[] buffer; byte* = buffer; byte** = &buffer;
相思梦 2015-01-18
  • 打赏
  • 举报
回复
值类型怎么引? 指向它的地址 就是引用了。 void* SetHandleCount(ref int value);
飞翔的薄荷 2015-01-16
  • 打赏
  • 举报
回复
引用 11 楼 Z65443344 的回复:
this是关键字,表示当前类的实例,不要胡乱把变量名起名为this
错误是这样来的

 struct Mystruct
    {
        public int test;
    }

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            List<Mystruct> temp = new List<Mystruct>();

            for (int i = 0; i != temp.Count; ++i )
            {
                temp[i].test = 1;
            }
        }
wyx100 2015-01-12
  • 打赏
  • 举报
回复
引用 6 楼 github_22161131 的回复:
醉人的问题。看这个 http://ericlippert.com/2011/06/23/ref-returns-and-ref-locals/。Eric Lippert 原来写过一个实现返回ref和局部ref的c#编译器,找他要来就能支持啦
lincolnandlinda 2015-01-12
  • 打赏
  • 举报
回复
引用 9 楼 ml232528 的回复:
不管是foreach还是下标操作,都不能修改 list<值类型>,真是蛋疼。 “foreach 迭代变量”,因此无法修改其成员。 无法修改this[int]”的返回值,因为它不是变量 。
这样其实挺好的,看看F#为了消除这种副作用,引入了Imutable变量,这种模式非常方便于实现并发和消除副作用
於黾 2015-01-12
  • 打赏
  • 举报
回复
this是关键字,表示当前类的实例,不要胡乱把变量名起名为this
於黾 2015-01-12
  • 打赏
  • 举报
回复
引用 9 楼 ml232528 的回复:
不管是foreach还是下标操作,都不能修改 list<值类型>,真是蛋疼。 “foreach 迭代变量”,因此无法修改其成员。 无法修改this[int]”的返回值,因为它不是变量 。
List<int> L=new List<int>(); L.Add(1); L[0]=2; this[int]是个毛线啊
於黾 2015-01-12
  • 打赏
  • 举报
回复
int a { get{return b;} set{b=value;} }
phommy 2015-01-12
  • 打赏
  • 举报
回复
var a = 1; var b = new Func<int>( ()=>a ); a = 3; Console.WriteLine(b()); //3 b()随a改变。c#没有匿名属性,这个思路无法完全符合你的要求,需要带着括号。
飞翔的薄荷 2015-01-11
  • 打赏
  • 举报
回复
不管是foreach还是下标操作,都不能修改 list<值类型>,真是蛋疼。 “foreach 迭代变量”,因此无法修改其成员。 无法修改this[int]”的返回值,因为它不是变量 。
devmiao 2015-01-08
  • 打赏
  • 举报
回复
做一个包装类 class RefType<T> { public T Value { get; set; } }
mahua_1915784404 2015-01-08
  • 打赏
  • 举报
回复
按引用传递引用类型 class MyInfo { public string MyName;//定义一个字符串类型变量存储用户姓名 public int MyAge;//定义一个整数类型变量存储用户年龄 public MyInfo(string name, int age)//创建一个带参数的构造函数 { MyName = name; MyAge = age; } public MyInfo() { }//默认构造函数 public void PrintInfo()//创建一个公有方法输出用户年龄信息 { Console.WriteLine("{0}年龄是{1}岁", MyName, MyAge); } } class Program { public static void SendAPersonByValue(ref MyInfo info) { info.MyAge = 99;//改变'info'的值 info = new MyInfo("玛丽莲", 25);//”info”现在指向了堆上的一个新对象 } static void Main(string[] args) { Console.WriteLine("输出用户年龄信息:"); MyInfo fred = new MyInfo("李明丽", 29); Console.WriteLine("未改变用户信息前"); fred.PrintInfo(); SendAPersonByValue(ref fred); Console.WriteLine("改变后的用户年龄信息:"); fred.PrintInfo(); } }
於黾 2015-01-08
  • 打赏
  • 举报
回复
这样做除了让你的代码更加混乱之外,还有其他意义吗
winnowc 2015-01-08
  • 打赏
  • 举报
回复
醉人的问题。看这个 http://ericlippert.com/2011/06/23/ref-returns-and-ref-locals/。Eric Lippert 原来写过一个实现返回ref和局部ref的c#编译器,找他要来就能支持啦
smthgdin_020 2015-01-07
  • 打赏
  • 举报
回复
值类型和引用类型不同,值类型不是地址引用。 硬是要a同时也变成3,要用引用类型包起来。
江南小鱼 2015-01-07
  • 打赏
  • 举报
回复
值类型,赋值是拷贝,不是地址引用!

你的问题,可以使用引用类型
或者使用指针,操作a的地址
  • 打赏
  • 举报
回复
两种“最有前途”的方式可以选择: 1. 自己高清楚业务封装含义,并且设计一个自定义对象。 2. 改学别的。
Pandorym 2015-01-07
  • 打赏
  • 举报
回复
unsafe
{
    int a = 1;
    int* b = &a;
    *b = 3;
    Console.WriteLine(a);
}
函式參數使用ref。 http://msdn.microsoft.com/zh-cn/library/14akc2c7(VS.80).aspx

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧