我在下面的代码片段中总结了我的问题.
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
为什么我在标有**的行上得到NullReferenceException异常
你实际上是在WriteLine通话中得到了例外.(我试过了)
因为st1传递ref,您传递的变量变为null.
甲ref参数是对一个参考变量,而不是一个对象的引用.
因此,如果方法将其ref参数更改为指向不同的对象,则将更改其引用的变量.
| 归档时间: |
|
| 查看次数: |
259 次 |
| 最近记录: |