首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >构造函数返回指向现有实例的指针

构造函数返回指向现有实例的指针
EN

Stack Overflow用户
提问于 2019-06-04 02:20:26
回答 1查看 106关注 0票数 2

我想知道如何创建一个默认的类构造函数。我不想浪费资源,所以我只想让构造函数返回一个指向该类已经存在的实例的指针。

这就是我所想的。显然,它不能工作,但我想遵循这段代码的逻辑。

代码语言:javascript
复制
public Sprite()
{
  return Default.MissingSprite;
}

public Sprite(Texture2D texture, SpriteDrawMode drawMode)
{
  if (drawMode != SpriteDrawMode.Sliced) throw new ArgumentException("...");
  this.texture = texture;
  this.drawMode = drawMode;
  this.sliceFraction = Default.SpriteSliceFraction;
}

public Sprite(Texture2D texture, SpriteDrawMode drawMode, float sliceFraction)
{
  this.texture = texture;
  this.drawMode = drawMode;
  this.sliceFraction = sliceFraction;
}

我知道构造函数是空的,所以我不能返回它们。

我不想只分配默认实例的值,因为这会浪费内存,因为它只会创建默认实例的副本

代码语言:javascript
复制
//This is what I do NOT want
public Sprite()
{
  this.texture = Default.MissingSprite.texture;
  this.drawMode = Default.MissingSprite.drawMode;
  this.sliceFraction = Default.MissingSprite.sliceFraction;
}

我想要实现的目标是可能的吗?我的思考过程中有没有设计上的问题?

EN

回答 1

Stack Overflow用户

发布于 2019-06-04 02:28:04

您需要做两个操作,一个是创建一个实例,另一个是返回一些值Default.MissingSprite。这在C#中是不可能的。

您应该做的是创建一个属性,用于寻址状态并保存该值,例如

代码语言:javascript
复制
public SpriteState State { get; set;}

然后在创建时(就像您在示例中所做的那样)

代码语言:javascript
复制
public Sprite()
{
   State = Default.MissingSprite;
} 

然后根据需要在其他构造函数中设置其他State

最后,由用户在使用前检查State属性。

代码语言:javascript
复制
var mySprite = new Sprite();

// Some code which could change the State...

switch (mySprite.State)
{
   case Default.MissingSprite:
      ...
   break;

   case Default.OkSprite:
      ...
   break;
  ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56432617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档