C中的C#Static实例的等价物是什么?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C中的C#Static实例的等价物是什么?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2029字,纯文字阅读大概需要3分钟。
内容图文
我有很多C#代码,我必须用C编写.我对C没有多少经验.
我正在使用Visual Studio 2012来构建.该项目是C中的静态库(不在C/C++LI中).
在C#代码中,有一个类为其创建了一些静态实例
C#
namespace MyNamespace
{
public class MyClass
{
//Class Code
static public MyClass Instance1 = new MyClass(/*parameters*/);
static public MyClass Instance2 = new MyClass(/*other parameters*/);
我需要在C中做类似的事情,到目前为止我得到了:
C
namespace MyNamespace
{
class MyClass
{
//Class Code
}//end of class
static MyClass& Instance1 = MyClass(/*parameters*/);
static MyClass& Instance2 = MyClass(/*other parameters*/);
}//end of Namespace
但是,从我读到的内容来看,这并不完全相同,通过添加单词“static”,我正在做的是我的Instance1和Instance2仅在当前文件的范围内可见.它是否正确?
所以我不想要一堆Instance1,我只想在整个程序中使用一个.
我读到它而不是使用静态,我可以使用extern,它告诉编译器变量的定义在另一个文件中,因此我最终只能使用Instance1和Instance2的一个实例而不是多个实例.
所以我尝试过:
C MyClass.h
extern MyClass& Instance1;
extern MyClass& Instance2;
C MyClass.cpp
MyClass& Instance1 = MyClass(/*parameters*/);
MyClass& Instance2 = MyClass(/*other parameters*/);
这构建得很好,但是当我尝试运行我的测试时,它们会抛出一个错误:
Failed to set up the execution context to run the test
在使用extern之前我的测试运行得很好,但是当我添加它时它们将无法正常工作.这让我相信我没有正确宣布事情,或者Visual Studio 2012可能不能正确支持某些功能?
解决方法:
根据使用的地方,静态在C中有不同的含义.当与变量声明一起使用时,它意味着你在想什么:没有变量的链接,它只能用于声明它的文件,甚至,如果它是一个局部变量,它只有一个副本(好)声明在它们被使用的地方附近应该是静态的局部变量的方法.
在类声明中虽然static意味着与C#中的相同,但区别在于您必须具有实际声明静态变量的源文件(或在方法中将其声明为静态),这是因为此静态变量必须具有空间保留在某个地方.这可以通过多种方式完成,例如:
static MyClass& instance() {
static MyClass realInstance;
return realInstance;
}
通过这种方式,您可以看到使用static的两种方式:一种是告诉instance()方法是静态的(附加到类名称空间,而不是单个实例),并且声明一个静态变量即使它是一个局部变量,它也只有一个自身副本.
内容总结
以上是互联网集市为您收集整理的C中的C#Static实例的等价物是什么?全部内容,希望文章能够帮你解决C中的C#Static实例的等价物是什么?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。