我正在尝试处理一个简单的结构。所有我需要在结构中拥有所有变量,这些变量稍后将用作连接字符串。我不打算为列出的变量分配任何新值。我知道如何对类做同样的事情,但现在我想发现如何使用结构。此外,我不需要在构造函数中使用这些参数字符串p1等但没有它们,我收到一个错误。请帮忙)
public struct ConnectionString
{
// vars declaration
public string ip, login, password;
// struct constructor
public ConnectionString(string p1, string p2, string p3)
{
ip = "192.168.1.1";
login = "boris";
password = "123456";
}
}
但是当我打电话给它时,我的输出空了:
ConnectionString ss = new ConnectionString();
Console.WriteLine("connection string: " + ss.password);
答案 0 :(得分:2)
// struct constructor public ConnectionString(string p1, string p2, string p3) { ip = "192.168.1.1"; login = "boris"; password = "123456"; }
但是当我打电话给它时,我的输出空了:
ConnectionString ss = new ConnectionString(); Console.WriteLine("connection string: " + ss.password);
您没有调用您定义的构造函数;你正在调用隐式生成的默认构造函数,这就是没有填充任何字段的原因。
编辑:从documentation,请注意以下内容:
在结构声明中,除非将字段声明为const或static,否则无法初始化字段。
选项:
1)删除你的构造函数并声明字段const
并提供值,即
public struct ConnectionString
{
// vars declaration
public const string ip = "192.168.1.1";
public const string login = "boris";
public const string password = "123456";
}
2)在调用默认构造函数
后填充这些字段3)调用你定义的构造函数(带参数),
4)(最佳选择)不使用结构来解决这个问题。
答案 1 :(得分:0)
而不是:
public ConnectionString(string p1, string p2, string p3) .....
使用:
public static ConnectionString Create()
{
return new ConnectionString { ip = "a", login = "b", password = "c" };
}
并使用:
ConnectionString ss = ConnectionString.Create();
这假设您必须完全使用结构。
答案 2 :(得分:0)
由于您没有使用在其中的构造函数中传递的参数,因此您可以调用它,如下所示。 As others have already commented, getting connection string is not something, you should do with struct.结构通常在集体使用一组相关参数和功能时使用,并且可用于较小的调用范围。它们是按值传递的,而不是通过引用传递的。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<nav id="mainNav" class="navbar navbar-default navbar-custom navbar-fixed-top">
<div class="container">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header page-scroll">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span> Menu <i class="fa fa-bars"></i>
</button>
<a class="navbar-brand page-scroll" href="#page-top"><img src="img/abc.png" alt="logo" width="72" height="68" id="logo">
</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li class="hidden">
<a href="#page-top"></a>
</li>
<li>
<a class="page-scroll" href="#services">services</a>
</li>
<li>
<a class="page-scroll" href="#portfolio">portfolio</a>
</li>
<li>
<a class="page-scroll" href="#portfolio_sectors">Sectors</a>
</li>
<li>
<a class="page-scroll" href="#my_carousel">References</a>
</li>
<li>
<a class="page-scroll" href="#about">About</a>
</li>
<li>
<a class="page-scroll" href="#team">Team</a>
</li>
<li>
<a class="page-scroll" href="#contact">Contact</a>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container-fluid -->
</nav>