我正在尝试使用.Net C#和Azure blob存储
我遵循Microsoft的文档以访问Blob表。
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Table;
using System.Threading.Tasks;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace WebApplication1.Controllers
{
public class EmailAdress
{
CloudStorageAccount storageAccount = new CloudStorageAccount(
new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(
"experimentstables", "token"), true);
// Create the table client.
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
// Get a reference to a table named "peopleTable"
CloudTable pexperimentsEmailAddresses = tableClient.GetTableReference("experimentsEmailAddresses");
}
}
在此行
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
storageAccount标记为红色,出现以下错误:
字段初始化器无法引用非静态字段方法或属性
我应该如何解决?
答案 0 :(得分:1)
您已将storageAccount
和tableClient
声明为类成员,因此storageAccount
必须为static
才能使用
public class EmailAdress
{
static CloudStorageAccount storageAccount = new CloudStorageAccount(...);
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
}
或者您可以将初始化放在方法中。
答案 1 :(得分:1)
创建一个构造函数并在那里实现所有字段初始化。
public class EmailAdress
{
CloudStorageAccount storageAccount;
CloudTableClient tableClient;
CloudTable pexperimentsEmailAddresses;
public EmailAdress()
{
storageAccount = new CloudStorageAccount(
new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(
"experimentstables", "token"), true);
// Create the table client.
tableClient = storageAccount.CreateCloudTableClient();
// Get a reference to a table named "peopleTable"
pexperimentsEmailAddresses = tableClient.GetTableReference("experimentsEmailAddresses");
}
}
答案 2 :(得分:1)
c# language specification明确指出:
实例字段的变量初始化程序无法引用正在创建的实例。因此,在变量初始值设定项中引用它是编译时错误,因为对于变量初始值设定项通过simple_name引用任何实例成员都是编译时错误。
您只能在构造函数中相对于另一个字段初始化一个字段。
将不会编译:
class A
{
int x = 1;
int y = x + 1; // Error, reference to instance member of this
}
将编译:
class A
{
public A()
{
int x = 1;
int y = x + 1; // Works just fine
}
}