C# 无法显式调用运算符或访问器和静态
我有两个愚蠢的问题: 第一个: 我已经问过这个问题了,我真的很抱歉再次问这个问题(因为有很多关于它的帖子,所以更是如此),但现在我真的不明白为什么会发生这种情况,即使我每隔一篇都读一次,下面是我的代码:C# 无法显式调用运算符或访问器和静态,c#,setter,C#,Setter,我有两个愚蠢的问题: 第一个: 我已经问过这个问题了,我真的很抱歉再次问这个问题(因为有很多关于它的帖子,所以更是如此),但现在我真的不明白为什么会发生这种情况,即使我每隔一篇都读一次,下面是我的代码: public class PageTitre { ... public void situation(string s) { onglet.get_Range("C11").Value = "(" + s + ")"; } } public class
public class PageTitre {
...
public void situation(string s) {
onglet.get_Range("C11").Value = "(" + s + ")";
}
}
public class PPE_Process {
public static PageTitre pageTitre;
public static void MainProcess() {
...
pageTitre = new PageTitre();
...
}
}
public partial class PPE_Ribbon {
private void SituationEditBox_TextChanged(object sender, RibbonControlEventArgs e)
{
PPE_Process.pageTitre.situation(SituationEditBox.Text);
}
}
我还尝试过其他一些方法,比如将情境作为PageTitre
的变量,使用get
和set
,以及
private void SituationEditBox_TextChanged(object sender, RibbonControlEventArgs e)
{
PPE_Process.pageTitre.set_situation(SituationEditBox.Text);
}
或
但没有任何效果,出现相同的错误:无法显式调用运算符或访问器
我想是静态的有问题吧
?如果是这样,我的第二个问题是:
第二个:
我读了很多关于它的文档,但我真的不明白“静态”的用途是什么。。。这只是为了我们不能在类之外更改值,还是类似的?那么,如果我去掉代码中所有的static
,它真的会改变什么吗
再一次,我很抱歉你不得不一次又一次地回答这个问题,但如果这与我的代码直接相关,而不是有人回答其他人关于其他随机代码的问题,我会理解得更好,因为其他随机代码的问题与我的不同/
编辑以添加更多信息:
.Value
或.get\u Range
应该不会有任何问题,因为它适用于代码的其他部分,但是
对于.Value
,以下是Visual Studio提供的信息:
无效范围.set_值([object RangeValueDataType=System.Type.Missing],[object Value=System.Type.Missing])
对于.get\u Range
:Excel.Range\u工作表.get\u Range(对象Cell1,[object Cell2=System.Type.Missing])
对于
static
,我仍然不能真正理解所有这些“实例”的事情,但我会尝试看得更多,并在这个论坛中添加另一个问题,如果我在这之后仍然不理解的话。对于你的第一个问题:我看不出你调用方法的情况有任何问题,可能问题在于方法中的语句(get\u Range(“C11”)
)
关于你的第二个问题:当你创建一个变量/属性/方法static
,这意味着它独立于类的任何实例(对象)。否则,如果没有PPE_进程的实例,您将无法访问属性PPE_进程.pageTitre
,好的,我的代码中没有任何更改,但现在它可以与
private void SituationEditBox_TextChanged(object sender, RibbonControlEventArgs e)
{
PPE_Process.pageTitre.situation = SituationEditBox.Text;
}
所以。。。我不知道,这可能是我的解决方案的构建有问题,但这很幸运:)如果您有两个问题,请分别提问。可能来自“onglet.get_Range(“C11”).Value”您能更新详细信息吗?错误看起来像Value是一个方法,但如果没有详细信息就很难判断,如果Value是一个方法,则应该使用.Value()调用它
private void SituationEditBox_TextChanged(object sender, RibbonControlEventArgs e)
{
PPE_Process.pageTitre.situation = SituationEditBox.Text;
}