gpt4 book ai didi

c# - 值类型和引用类型

转载 作者:太空宇宙 更新时间:2023-11-03 18:17:10 25 4
gpt4 key购买 nike

我在以下代码片段中总结了我的问题。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication13
{
public class Student
{
public int Marks { get; set; }
public Student(int marks)
{
this.Marks = marks;

}
public void AssignMarks(Student st)
{
st = null;
}
public void AssignMarks(ref Student st)
{
st = null;
}
}
class Program
{
static void Main(string[] args)
{
Student st = new Student(50);
st.AssignMarks(st);
Console.WriteLine(st.Marks);
Student st1 = new Student(50);
st.AssignMarks(ref st1); // NullReferenceException
Console.WriteLine(st1.Marks);
}
}
}


为什么在标有**的行上出现NullReferenceException异常

最佳答案

您实际上在WriteLine调用上遇到了异常。(我尝试过)

因为st1是通过ref传递的,所以传递的变量将成为null

ref参数是对变量的引用,而不是对对象的引用。
因此,如果方法将其ref参数更改为指向另一个对象,则传递其引用的变量将被更改。

关于c# - 值类型和引用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4389246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com