当前位置:  开发笔记 > 编程语言 > 正文

为什么我会在创建和返回新结构时遇到此错误?

如何解决《为什么我会在创建和返回新结构时遇到此错误?》经验,为你挑选了1个好方法。

编译此代码时出错:

using System;

public struct Vector2
{
    public event EventHandler trigger;

    public float X;
    public float Y;

    public Vector2 func()
    {
        Vector2 vector;
        vector.X = 1;
        vector.Y = 2;
        return vector;  // error CS0165: Use of unassigned local variable 'vector'
    }
}

您好!

编译器说:"使用未分配的局部变量'vector'"并指向返回值.在我看来,Vector2成为一个引用类型(没有事件成员,它正常行事).怎么了?



1> Rob Walker..:

在C#中,除非要初始化所有字段,否则仍需要"new"一个结构来调用构造函数.你没有分配EventHandler成员'trigger'.

尝试分配"触发器"或使用:

Vector2 vector = new Vector2()

新对象在堆上分配,它仍在功能堆栈上分配.

引用MSDN:

使用new运算符创建结构对象时,会创建它并调用相应的构造函数.与类不同,可以在不使用new运算符的情况下实例化结构.如果不使用new,则字段将保持未分配状态,并且 初始化所有字段之前无法使用对象.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有