在创建了一个新的ASP.NET核心3项目之后,我在VisualStudio2019中得到以下警告:
警告CA1052类型'Program‘是静态保持类型,但既不是静态的,也不是NotInheritable的
public class Program
{
public static void Main(string[] args)
{
// ...
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
我有一个只包含静态方法的实用工具类。如果我将类标记为静态的,这是一个打破二进制的变化吗?
我比较了两者的IL,除了失去默认的构造函数(不应该使用)之外,我可以看到以下的不同之处.
未标记为静态的:
.class public auto ansi beforefieldinit MyNamespace.MyClass
标记为静态的类:
.class public auto ansi abstract sealed beforefieldinit MyNamespace.MyClass
我不明白为什么这会是一个巨大的改变,但是.?
我在班上收到一条警告信息,就像
向类声明中添加Protected构造函数或static关键字
解决方案
在我尝试了以下两种方法之后,错误就消失了,
没有static的constructor类
public static class Program {
}
使用构造函数使用带有static的非protected类
public class Program
{
protected Program() { }
}
问题:
那么,静态类和受保护的构造器之间有什么区别呢?我在上面的解决方案中已经提到了这一点。哪一种最适合使用?
我试图将一个类的引用传递给另一个类,这看起来相当复杂,因为我必须编辑类所涉及的所有文件。
我试图将变量设置为静态成员,但它看起来相当难看。
我可以继承另一个类。但是有没有其他方法而不是子类化呢?
class A
{
func1(){};
};
class B
{
func3()
{
//how can I call func 1 without instantiating class A and subclass A?
};
};
我再次来到这里,我想延伸一下我今天提出的关于this和super关键字的问题。
让我们举几个例子。
示例1
import java.applet.*;
public class Main extends Applet {
//overrides Applet.init ()
public void init () {
//here I use super keyword without creating an istance of the class Applet
super.init ();
我不确定在活动之间传递外部类的最佳方式。我应该让它们都可以打包吗?只是不确定如何在writeToParcel方法中处理可打包数组。
public class checklistItem {
String name;
String date;
...
}
public class dailyChecklist {
...
checklistItem[] theList;
...
}
我试图回答以下问题:
子类不会继承父类的某些成员。请举出三位这样的成员。
我知道私有成员不会继承到子类,默认成员也不会在包之外继承。有人能完成答案吗?
编辑:-我相信静态成员是根据下面的演示继承的。
public class sup {
public static void main(String agr[]){
}
protected static int staticInt=0;
protected final int finalInt=3;
protected int protectedInt=0;
public String p
我被告知java中的静态方法没有继承,但是当我尝试下面的测试时
package test1;
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
TB.ttt();
TB.ttt2();
}
}
package test1;
public class TA {
static public Boolean ttt()
{
System.o
class Test
{
private $flag;
public function __construct($flag)
{
$this->flag = $flag;
}
public function a()
{
if ($this->flag)
{
$this->b();
}
}
public function b()
{
$this->c();
}
public
我理解“无法对非静态方法进行静态引用”的错误,但我遇到了这样的情况:
public class MyClass {
public static void main(String[] args) {
MyClass myClassInstance = new MyClass();
while (true) {
myClassInstance.myMethod();
myMethod();//Cannot make a static reference to the non-static m
我想举一个例子:
1 public class Ticket
2 {
3 private int ticketid;
4 private int price;
5 private int availableTickets;
6 public void setTicketid(int ticketid)
7 {
8 this.ticketid=ticketid;
9 }
10 public void setPrice(int price)
我的代码如下:
类T可以扩展ClassO.Four。Four是ClassO内的静态类,但不能扩展ClassO.Two Two是ClassO内的内部类。我收到错误消息
No enclosing instance of type ClassO is available due to some intermediate constructor invocation
行为差异的原因是什么?
class ClassO
{
interface inner
{
void msg();
}
class Two implements inner
{
public class BusinessObjects<O>
where O : BusinessObject
{
void SomeMethod()
{
var s = O.MyStaticMethod(); // <- How to do this?
}
}
public class BusinessObject
{
public static string MyStaticMethod()
{
return "blah";
}
}
有没有一种正确的面向对象的方法来
我有两个类,A类和ClassB类:
static class ClassA
{
static string SomeMethod()
{
return "I am a Static Method";
}
}
class ClassB
{
static string SomeMethod()
{
return "I am a Static Method";
}
}
我想知道ClassA.SomeMethod();和ClassB.SomeMethod();的区别是什么
当它们都可以在不
一个例子胜过一千个愚蠢的问题,所以:
public class OuterClass
{
public static class InnerClassEventArgs : EventArgs
{
public static int SomeInt;
}
}
在遥远的银河系中:
public void SomeFunkyFunc()
{
OuterClass Instance1;
OuterClass Instance2;
Instance1.InnerClassEventArgs.SomeInt = 1;
Instan
模板类是从具有静态数据成员的非模板类派生的。为什么我不能在不指定模板参数的情况下访问它呢?实际上,我可以在没有模板参数的情况下访问模板类中的任何方法或数据吗?
class CNonTemplateBase{
public:
static int some_data;
};
int CNonTemplateBase::some_data = 10;
template<typename T> class CTemplateClass : public CNonTemplateBase{};
...
...
int a = CTemplateClass<int&
是否可以在类之外访问非静态数据成员?假设你有一个类似下面的例子。我知道这作为示例没有多大意义,但我只是想了解如何访问非静态数据成员。如果编译了以下代码,则会生成一个错误:
C.h|70|error: invalid use of non-static data member ‘C::age’|
//C.h
class C{
public:
int age;
};
int getAge();
//C.cpp
C::C()
{
age = 0;
}
int getAge(){
return (C::age);
}
我在用Java练习编程。我已经开始做一个Xs和Os (Tac Toe)游戏,我从游戏的基线逻辑开始。对于我的编程风格,我做错了什么,以及我的代码有什么好处,我会很感激。
组合类
public class Combinations
{
public static Map<Field, Mark> firstRow;
public static Map<Field, Mark> secondRow;
public static Map<Field, Mark> thirdRow;
public static Map<
关于如何在java中创建getter和setter方法,已经提出了大量的问题。但我还没有看到一个真正告诉我如何使用它的方法。
假设我在A类中有Private int i = 1;,我想在B类中访问它。我首先在A类中创建一个名为getIntI();的get方法,它将返回i的值。
然后在B类中,如果我想要创建一个需要i值的if语句,我将如何得到int值。下面是我的尝试,并调用get方法,该方法不起作用。
if(getIntI == 1)
{System.out.print.ln("int i is one");}
这可能是一个非常愚蠢的问题,但我在其他地方找不到答案。
只是想确认一下。
public class Indeed{
public static class Inner implements Runnable{
public void run()
{
System.out.println("Indeed");
}
}
public static void main (String []args)
{
Indeed.Inner inner = new Indeed.Inner();
inner.run();
}
}
正如您在上面的代码中所看到
我目前只是在玩弄不同的类来测试它们是如何协同工作的,但我在NetBeans中得到了一个我无法解决的错误消息。下面是我的代码:
first_class.java类
public class first_class {
private second_class state;
int test_tal=2;
public void test (int n) {
if (n>2) {
System.out.println("HELLO");
}
else {
System.out.println("GOODBY
为什么下面的代码片段使用非静态代码来运行程序?以这种方式运行程序有什么好处吗?
public static void main(String[] args) {
Main go = new Main();
go.start();
}
public Main() {
}
public void start() {
//SOME CODE HERE
}