|
1) Create a new Windows Application Project
2) Right-click the project in Solution Explorer
3) Select Properties
4) In General -> Change Output Type from Web Application to Class Library
This will build a DLL. Now you can remove the Form1.cs if desired, and add classes.
Edit: Hmm... didn't see the dozen responses before I replied. Oh well.
|
|
|
|
|
hi,
i want to know, how can i inactivate the Focus of a button?
by clicking on the button, it does not get the focus.
does any WM_message exist witch will be send wenn a component gets the focus?
|
|
|
|
|
|
very funny
|
|
|
|
|
Hello!
I have a windows forms application and when I double click it I don't want
the Command window(cmd.exe) show.
How do I do it ?
regards.
|
|
|
|
|
If i understood your problem well, you can solve it by:
1. Open Properties Pages of you project
2. Common Properites/General/Output Type set to Windows Application rather than Console Application
Hope this helps
ARK
|
|
|
|
|
Hi,
i have got some wired problem, for which i can not find the easy answer since i am new to c#. I wrote and application that uses Direct3D to render the mechanism. To drive the mechanism i use complex 6D numerical algorithm that uses System.Math to get solutions. Both graphical and mathematical parts work fine seperately. However when i want to run graphical interface and numerical engine in paralel in a single application i get the following problem(note if i compile two seperate aplications they run fine):
The System.Math starts to behave in a wired way, round function does not work well (i.e. if i try to round to two deciml places, it rounds to 10, or if i try to roung number 999 it rounds it to 1).
I tired to backtrack what causes the problem, and apaprently the probelm comes once create the d3d device is executed:
device = new Device(graphicsSettings.AdapterOrdinal, graphicsSettings.DevType, windowed ? RenderTarget : this , createFlags, presentParams);
To write Direct3D engine, i directly adopted example 'Enhanced Mesh' provided by DirectXSDK.
I think something happens to memory or to recources, but not sure about it. Anyone has any ideas on how to solve this sort of problem?? Anything would be a value to me. IF someone is willing to look at the code files let me know by email to ark@centras.lt, and i will send them to you.
Thanks
ARK
|
|
|
|
|
can someone pls tell me IN WHAT cases do we need static constructors?
tks a lot for the help
Have a Super Blessed Day!
-------------------------
For God has not given us a spirit of fear, but of power and of love and of a sound mind.
2 Timothy 1:7
"For God so loved the world that He gave His only begotten Son, that whoever believes in Him should not perish but have everlasting life."
John 3:16
"Therefore you also be ready, for the Son of Man is coming at an hour you do not expet."
Luke 12:40
|
|
|
|
|
To initialize static fields.
-Blake
|
|
|
|
|
say if i have 1 static var in my class and one non-static one...
so do i need 2 constructors? a static one and a non static one?
Have a Super Blessed Day!
-------------------------
For God has not given us a spirit of fear, but of power and of love and of a sound mind.
2 Timothy 1:7
"For God so loved the world that He gave His only begotten Son, that whoever believes in Him should not perish but have everlasting life."
John 3:16
"Therefore you also be ready, for the Son of Man is coming at an hour you do not expet."
Luke 12:40
|
|
|
|
|
Yup.
Though C# does have a convenient feature of creating constructors for you based on variable initialization statements. This is particularly handy with static constructors. For example, the following two pieces of code are almost equivalent.
class Foo {
static int Bar = 42;
}
class Foo {
static int Bar;
static Foo() {
Bar = 42;
}
}
Aside from being less typing, it turns out that the first syntax is a little more efficient as well. The reason why is complicated and I won't try to cover it here, but if you are curious you can google for 'beforefieldinit'.
-Blake
|
|
|
|
|
one last question....
lets say i have a class
class Foo<br />
{<br />
static int iFoo<br />
int iBar<br />
}
in the class above how should my constructor look like??
should i have one constructor??
or two? one static constructor and one non static???
tks...
Have a Super Blessed Day!
-------------------------
For God has not given us a spirit of fear, but of power and of love and of a sound mind.
2 Timothy 1:7
"For God so loved the world that He gave His only begotten Son, that whoever believes in Him should not perish but have everlasting life."
John 3:16
"Therefore you also be ready, for the Son of Man is coming at an hour you do not expet."
Luke 12:40
|
|
|
|
|
You can't do it with one constructor, but beyond that there's no one right answer, it depends how you are calculating the value you want to initialize those fields with. If the values are simple expressions, then don't write explicit constructors at all, just do:
class Foo {
static int foo = Date.Now.Year;
int bar = (int)(Random.Sample() * 100);
} Only write a static constructor if you need to execute logic that doesn't fit in an expression like that, say loading a static lookup table out of your config file or database.
Write instance constructors either, if you need more complicated code like above, or if you want to pass parameters that control the initialization.
On an unrelated note, don't use hungarian notation with C#. Have a look at Design Guidelines for Class Library Developers[^] on MSDN for that and other important style tips for C# and .NET.
-Blake
|
|
|
|
|
Blake is right, it all depends. The important thing to keep in mind is that one field is Type-based (the static field), and one field is instance-based. That static field value will be the same for all instances of the class. That instance field value will be different for each instance.
The ubiquitous example is the Company and Employee s example. While the Company class may keep a count of Employee objects added or removed from it, another way to solve this is to have the Employee Type keep track of it:
public class Employee
{
private static int count = 0;
public Employee()
{
count++;
}
~Employee()
{
count--;
}
} While this is a very basic and impractical solution (because it doesn't allow for multiple companies to have different employees), it is just an example.
I use this a lot to initialize caches for objects in the same context, such as a download manager that keeps a cache of files. Different instances of that download manager (actually, it's a singleton now, but the following still applies...) share the same cache, just like different instances of Internet Explorer (actually, anything that uses URL monikers or the like) share the same cache on the filesystem (though it's not "initialized" per se). I do this in the static constructor to make sure that it is initialized before the class.
So, basically, the order for instantiating of two objects is done like so:- Static constructor (IL: .cctor)
- Instance constructor (IL: .ctor)
- Instance constructor (IL: .ctor)
- Destructor (IL: Finalize)
- Destructor (IL: Finalize)
Note, there is no "static destructor". Even if all instances of the Type have been disposed and garbage collected, the static field still retains it's value until the Type is unloaded (which is done when its assembly is unloaded, which is done when the AppDomain that assembly is bound to unloads).
-----BEGIN GEEK CODE BLOCK-----
Version: 3.21
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----
|
|
|
|
|
hi...i've always wanted to know what the difference between stack and heap??
when we create a class in C#, say for eg. a class TinCan
TinCan t1;
i came to know that it is created on stack!
Q : Wat is stack? why is it created on statck and not on heap?
then lets say i initiate my reference by creating an object
t1 = new TinCan;
i came to know that this allocates space in memory on the Heap!
Q :What is a heap? why is it now created on heap instead of stack?
Q : Why does C# create the reference on stack and objects on heap?
Q : Whats the difference between stack and heap?
tks a lot for any help!
Have a Super Blessed Day!
-------------------------
For God has not given us a spirit of fear, but of power and of love and of a sound mind.
2 Timothy 1:7
"For God so loved the world that He gave His only begotten Son, that whoever believes in Him should not perish but have everlasting life."
John 3:16
"Therefore you also be ready, for the Son of Man is coming at an hour you do not expet."
Luke 12:40
|
|
|
|
|
The stack is the linear piece of memory that the operating system and CLR use to maintain the flow of control for a thread. Every thread has its own stack. Each time a method is called the stack grows (traditionally downwards in memory on x86 architectures) as the OS/CLR adds a stackframe.
Each stack frame contains the memory for the functions parameters, it's local variables, and the address to which it will return when complete. (Other more subtle things can be stored on the stack as well, like markers for managed vs unmanaged, assembly evidence, random data that you used stackalloc to reserve space for, etc, but ignore that for now.)
Local variables are created in the stackframe in most languages. This is what enables recursion and scoping of those variables. If you had declared 'struct TinCan' instead of 'class TinCan' the actual value of your object would have been stored on the stack as well, not just a reference to it.
When a method ends, its stackframe is discarded and all data stored there is lost.
The heap is a block of memory managed by the CLR (and allocated out of the OS heap which serves the same purpose for unmanaged processes). From this large block, an application can allocate space for data/objects. The lifetime of an object allocated on the heap is unrelated to the flow of control from method to method. In a managed language like C# the lifetime is controlled by the garbage collection process. In an unmanaged language like C++ the lifetime is controlled by the application which must manually free objects/release data on the heap.
In C# reference types (things declared with 'class') are always allocated on the heap because this permits them to be managed by the garbage collection. Value types (things declared with 'struct') are either allocated on the stack and their lifetime is managed by the flow of execution or they are allocated embedded inside a reference type in which case their lifetime is that of the enclosing object. (A reference to a object is itself a value type and hence follows those rules.)
Hope this helps.
-Blake
|
|
|
|
|
very helpfull indeed...
perhaps if you have some time, you could shed some more light on
Each time a method is called the stack grows (traditionally downwards in memory on x86 architectures) as the OS/CLR adds a stackframe.
and
stackframe....
tks a lot
Have a Super Blessed Day!
-------------------------
For God has not given us a spirit of fear, but of power and of love and of a sound mind.
2 Timothy 1:7
"For God so loved the world that He gave His only begotten Son, that whoever believes in Him should not perish but have everlasting life."
John 3:16
"Therefore you also be ready, for the Son of Man is coming at an hour you do not expet."
Luke 12:40
|
|
|
|
|
Ut oh... this may require ASCII art, always dangerous. Here goes:
class Example {
int c;
int d = 3;
static int f;
static void Main() {
Example e = new Example();
e.Foo(0);
}
void Foo(int a) {
int b = Bar(a);
c = b;
b += Bar(a, this);
}
int Bar(int a) {
string s = "Test";
return a + 42;
}
} Given the code above, here's what the stack would look like
just as Bar as been called for the second time.
I've oversimplified a _lot_ of things, but this covers the important points.
Stack Heap
Main's +------------------+
Stack- |address of cleanup|
frame |Main.e variable =--+
+------------------+ | Example Object Example Class
Foo's |address of Main | | +------------------+ +---------------+
Stack- |'this' pointer =--+->|address of class |=-->|address of Foo |
frame |Foo.a parameter 0| | |Example.c field 42| |address of Bar |
|Foo.b variable 42| | |Example.d field 3| |Example.f field|
+------------------+ | +------------------+ +---------------+
Bar's |address of Foo | | String Object String Object
Stack- |'this' pointer =--+ +-------------+ +---------------+
frame |Bar.a parameter 42| +-->|various | |string from 1st|
|Bar.s variable =-----+ |string fields| |call to Bar |
+------------------+ +-------------+ +---------------+ Sequence of Events:
1) When the code started there was just Main's stackframe.
2) When Foo was called, Foo's stackframe was added below Main's.
3) When Bar was called the first time, a stackframe for it was created below Foo's.
4) When Bar returned the first time this stackframe was removed.
5) When Bar was called a second time, a new stackframe was created. (It happens to be in the same place as the first one, but doesn't have to be.)
Things to Note:
~ Those int values in variables and parameters are stored on the stack.
~ The references to objects of type example are stored on the stack and point into the heap.
~ Instance variables like Example.c and Example.d are stored with the object on the heap.
~ Static variables like Example.f are stored in one place that all instances have a pointer to.
~ The string object created during the first call to Bar is no longer referenced and the garbage collector will clean it up as needed.
-Blake
|
|
|
|
|
wow!!thats a lot of neat info...if you have anymore info pls do lemme know.....tks a lot......really appreciate your help...
Have a Super Blessed Day!
-------------------------
For God has not given us a spirit of fear, but of power and of love and of a sound mind.
2 Timothy 1:7
"For God so loved the world that He gave His only begotten Son, that whoever believes in Him should not perish but have everlasting life."
John 3:16
"Therefore you also be ready, for the Son of Man is coming at an hour you do not expet."
Luke 12:40
|
|
|
|
|
You are welcome, and no I think that's enough blathering for me for this morning. The best resource for questions of this nature is Don Box's Essential .NET, Volume 1: The Common Language Runtime. I heartily recommend it to anyone who wants to really understand how and why the CLR works.
-Blake
|
|
|
|
|
hi.....
probably a stupid question...but can someone pls tell me how can i get the remainder of a devision in C#???
lets say
3/2
i need to get the reaminder and the quotient seperately...
can anyone help?
tks...
Have a Super Blessed Day!
-------------------------
For God has not given us a spirit of fear, but of power and of love and of a sound mind.
2 Timothy 1:7
"For God so loved the world that He gave His only begotten Son, that whoever believes in Him should not perish but have everlasting life."
John 3:16
"Therefore you also be ready, for the Son of Man is coming at an hour you do not expet."
Luke 12:40
|
|
|
|
|
|
are u saying if i do
int 1 = 3%2
i will get 1?
Have a Super Blessed Day!
-------------------------
For God has not given us a spirit of fear, but of power and of love and of a sound mind.
2 Timothy 1:7
"For God so loved the world that He gave His only begotten Son, that whoever believes in Him should not perish but have everlasting life."
John 3:16
"Therefore you also be ready, for the Son of Man is coming at an hour you do not expet."
Luke 12:40
|
|
|
|
|
Yep. That's exactly what he meant. % is a remainder operator in C#, just like / is for division.
Rakesh
Rakesh
|
|
|
|
|
int intRemainder = 0;
Math.DivRem(int1, int2, out intRemainder);
--- or ---
int intRemainder = int1 % int2;
The 2nd way is what Joseph was talking about. The first way is longer however it is using .NET routines so it is safer if you care about cross coding. I would normally always use the second method.
|
|
|
|