.NET Questions

***************************************070-536****************************************

Q1: You need to identify a type that meets the following criteria:
         Is always a number.
         Is not greater than 65,535.
Which type should you choose?

A. System.UInt16
B. int
C. System.String
D. System.IntPtr

Answer: A

Explanation: Represents a 16-bit unsigned integer.
The UInt16 value type represents unsigned integers with values ranging from 0 to 65535.

Q2: Your application uses two threads, named threadOne and threadTwo.
You need to modify the code to prevent the execution of threadOne
until threadTwo completes execution.
What should you do?

A. Configure threadOne to run at a lower priority.
B. Configure threadTwo to run at a higher priority.
C. Use a WaitCallback delegate to synchronize the threads.
D. Call the Sleep method of threadOne.
E. Call the SpinLock method of threadOne.

Answer: C

Q3: You write the following custom exception class named
CustomException.
public class CustomException : ApplicationException {
public static int COR_E_ARGUMENT = unchecked((int)0x80070057);
public CustomException(string msg) : base(msg) {
HResult = COR_E_ARGUMENT;
}}
You need to write a code segment that will use the CustomException class
to immediately return control to the COM caller. You also need to ensure
that the caller has access to the error code. Which code segment should
you use?

A. return Marshal.GetExceptionForHR(CustomException.COR_E_ARGUMENT);
B. return CustomException.COR_E_ARGUMENT;
C. Marshal.ThrowExceptionForHR(CustomException.COR_E_ARGUMENT);
D. throw new CustomException("Argument is out of bounds");

Answer: D

Q4: You are creating an undo buffer that stores data modifications. You
need to ensure that the undo functionality undoes the most recent data
modifications first. You also need to ensure that the undo buffer permits
the storage of strings only. Which code segment should you use?

A. Stack<string> undoBuffer = new Stack<string>();
B. Stack undoBuffer = new Stack();

C. Queue<string> undoBuffer = new Queue<string>();
D. Queue undoBuffer = new Queue();

Answer: A

Q5: You are developing an application to assist the user in conducting
electronic surveys. The survey consists of 25 true-or-false questions.
You need to perform the following tasks:
         Initialize each answer to true.
         Minimize the amount of memory used by each survey.
Which storage option should you choose?

A. BitVector32 answers = new BitVector32(1);
B. BitVector32 answers = new BitVector32(-1);
C. BitArray answers = new BitArray(1);
D. BitArray answers = new BitArray(-1);

Answer: B

Explanation: BitVector32 Provides a simple structure that stores Boolean values and small integers in 32 bits of memory.
BitVector32 is more efficient than BitArray for Boolean values and small integers that are used internally. A BitArray can grow indefinitely as needed, but it has the memory and performance overhead that a class instance requires. In contrast, a BitVector32 uses only 32 bits.

Q6: You are writing a method to compress an array of bytes. The bytes
to be compressed are passed to the method in a parameter named
document. You need to compress the contents of the incoming parameter.
Which code segment should you use?

A. MemoryStream inStream = new MemoryStream(document);
GZipStream zipStream = new GZipStream(inStream, CompressionMode.Compress);
byte[] result = new Byte[document.Length];
zipStream.Write(result, 0, result.Length);
return result;

B. MemoryStream Stream = new MemoryStream(document);
GZipStream zipStream = new GZipStream(stream, CompressionMode.Compress);
zipStream.Write(document, 0, document.Length);
zipStream.Close();
return stream.ToArray();

C. MemoryStream outStream = new MemoryStream();
GZipStream zipStream = new GZipStream(outStream, CompressionMode.Compress);
zipStream.Write(document, 0, document.Length);
zipStream.Close();
return outStream.ToArray();

D. MemoryStream inStream = new MemoryStream(document);
GZipStream zipStream = new GZipStream(inStream, CompressionMode.Compress);
MemoryStream outStream = new MemoryStream();
int b;
while((b = zipStream.ReadByte()) != -1)
{outStream.WriteByte((byte)b);}
return outStream.ToArray();


Answer: C

Explanation: GZipStream Provides methods and properties used to compress and decompress streams. This class represents the gzip data format, which uses an industry standard algorithm for lossless file compression and decompression. The format includes a cyclic redundancy check value for detecting data corruption.

Q7: You develop a service application named FileService. You deploy the
service application to multiple servers on your network. You implement the
following code segment. (Line numbers are included for reference only.)
01 public void StartService(string serverName)
{
02 ServiceController crtl = new
03 ServiceController("FileService");
04 if (crtl.Status == ServiceControllerStatus.Stopped)
{05 }
06
}
You need to develop a routine that will start FileService if it stops. The
routine must start FileService on the server identified by the serverName
input parameter. Which two lines of code should you add to the code
segment? (Each correct answer presents part of the solution. Choose two.)
A. Insert the following line of code between lines 03 and 04:
crtl.ServiceName = serverName;
B. Insert the following line of code between lines 03 and 04:
crtl.MachineName = serverName;
C. Insert the following line of code between lines 03 and 04:
crtl.Site.Name = serverName;
D. Insert the following line of code between lines 04 and 05:
crtl.Continue();
E. Insert the following line of code between lines 04 and 05:
crtl.Start();
F. Insert the following line of code between lines 04 and 05:
crtl.ExecuteCommand(0);

Answer: B, E

Q8: You are writing an application that uses isolated storage to store user
preferences. The application uses multiple assemblies. Multiple users will
use this application on the same computer. You need to create a directory
named Preferences in the isolated storage area that is scoped to the
current Microsoft Windows identity and assembly. Which code segment
should you use?

A.   IsolatedStorageFile store;
store = IsolatedStorageFile.GetUserStoreForAssembly();
store.CreateDirectory("Preferences");

B.   IsolatedStorageFile store;
store = IsolatedStorageFile.GetMachineStoreForAssembly();
store.CreateDirectory("Preferences");

C.   IsolatedStorageFile store;
store = IsolatedStorageFile.GetUserStoreForDomain();
store.CreateDirectory("Preferences");

D.   IsolatedStorageFile store;
store = IsolatedStorageFile.GetMachineStoreForApplication();
store.CreateDirectory("Preferences");

Answer: A

Explanation: IsolatedStorageFile represents an isolated storage area containing files and directories. This object corresponds to a specific isolated storage scope, where files represented by IsolatedStorageFileStream objects exist. Applications can use isolated storage to save data in their own isolated portion of the file system, without having to specify a particular path within the file system. Since isolated stores are scoped to particular assemblies, most other managed code will not be able to access your code's data (highly trusted managed code and administration tools can access stores from other assemblies). Unmanaged code can access any isolated stores.

Q9: You need to write a multicast delegate that accepts a DateTime argument.
Which code segment should you use?

A. public delegate int PowerDeviceOn(bool result, DateTime autoPowerOff);
B. public delegate bool PowerDeviceOn(object sender, EventsArgs autoPowerOff);
C. public delegate void PowerDeviceOn(DataTime autoPowerOff);
D. public delegate bool PowerDeviceOn(DataTime autoPowerOff);

Answer: C

Q10: You develop a service application that needs to be deployed. Your
network administrator creates a specific user account for your service
application. You need to configure your service application to run in the
context of this specific user account. What should you do?

A. Prior to installation, set the StartType property of the ServiceInstaller class.

B. Prior to installation, set the Account, Username, and Password properties of the
ServiceProcessInstaller class.

C. Use the CONFIG option of the net.exe command-line tool to install the service.

D. Use the installutil.exe command-line tool to install the service.

Answer: B

Explanation: ServiceProcessInstaller installs an executable containing classes that extend ServiceBase. This class is called by installation utilities, such as InstallUtil.exe, when installing a service application. The ServiceProcessInstaller does work common to all services in an executable. It is used by the installation utility to write registry values associated with services you want to install.
For an instance of ServiceProcessInstaller, properties you can modify include specifying that a service application run under an account other than the logged-on user. You can specify a particular Username and Password pair under which the service should run, or you can use Account to specify that the service run under the computer's System account, a local or network service account, or a user account.

Q11: You need to create a method to clear a Queue named q. Which code
segment should you use?

A. foreach (object e in q) {
q.Dequeue();
}

B. foreach (object e in q) {
Enqueue(null);
}

C. q.Clear();

D. q.Dequeue();


Answer: C


Q12: You need to return the contents of an isolated storage file as a string. The
file is machine-scoped and is named Settings.dat. Which code segment should you
use?

A. IsolatedStorageFileStream isoStream;
isoStream = new IsolatedStorageFileStream("Settings.dat", FileMode.Open);
string result = new StreamReader(isoStream).ReadToEnd();

B. IsolatedStorageFile isoFile;
isoFile = IsolatedStorageFile.GetMachineStoreForAssembly();
IsolatedStorageFileStream isoStream;
isoStream = new IsolatedStorageFileStream("Settings.dat", FileMode.Open, isoFile);
string result = new StreamReader(isoStream).ReadToEnd();

C. IsolatedStorageFileStream isoStream;
isoStream = new IsolatedStorageFileStream("Settings.dat", FileMode.Open);
string result = isoStream.ToString();

D. IsolatedStorageFile isoFile;
isoFile = IsolatedStorageFile.GetMachineStoreForAssembly();
IsolatedStorageFileStream isoStream;
isoStream = new IsolatedStorageFileStream("Settings.dat", FileMode.Open, isoFile);
string result = isoStream.ToString();

Answer: B


Q13: You are creating a class to compare a specially-formatted string. The
default collation comparisons do not apply. You need to implement the
IComparable<string> interface. Which code segment should you use?

A. public class Person : IComparable<string>{
public int CompareTo(string other){
}}

B. public class Person : IComparable<string>{
public int CompareTo(object other){
}}

C. public class Person : IComparable<string>{
public bool CompareTo(string other){
}}

D. public class Person : IComparable<string>{
public bool CompareTo(object other){
}}


Answer: A


Q14: You develop a service application named PollingService that
periodically calls long-running procedures. These procedures are called
from the DoWork method. You use the following service application code:

partial class PollingService : ServiceBase {
bool blnExit = false;
public PollingService() {}
protected override void OnStart(string[] args) {
do {
DoWork();
} while (!blnExit);
}
protected override void OnStop() {
blnExit = true;
}
private void DoWork() {
...
} }

When you attempt to start the service, you receive the following error
message: Could not start the PollingService service on the local computer.
Error 1053: The service did not respond to the start or control request in a
timely fashion. You need to modify the service application code so
that the service starts properly. What should you do?
A. Move the loop code into the constructor of the service class from the OnStart method.

B. Drag a timer component onto the design surface of the service. Move the calls to the long-running procedure from the OnStart method into the Tick event procedure of the timer, set the Enabled property of the timer to True, and call the Start method of the timer in the OnStart method.

C. Add a class-level System.Timers.Timer variable to the service class code. Move the call to the DoWork method into the Elapsed event procedure of the timer, set the Enabled property of the timer to True, and call the Start method of the timer in the OnStart method.

D. Move the loop code from the OnStart method into the DoWork method.


Answer: C

Q15: You are developing an application that will perform mathematical
calculations. You need to ensure that the application is able to perform
multiple calculations simultaneously. What should you do?

A. Set the IdealProcessor property of the ProcessThread object.

B. Set the ProcessorAffinity property of the ProcessThread object.

C. For each calculation, call the QueueUserWorkItem method of the ThreadPool class.

D. Set the Process.GetCurrentProcess().BasePriority property to High.


Answer: C

Explanation: QueueUserWorkItem Queues a method for execution. The method executes when a thread pool thread becomes available.



Q16: You need to select a class that is optimized for key-based item
retrieval from both small and large collections. Which class should you
choose?

A. OrderedDictionary class

B. HybridDictionary class

C. ListDictionary class

D. Hashtable class

Answer: B

Explanation:
HybridDictionary: Implements IDictionary by using a ListDictionary while the
collection is small, and then switching to a Hashtable when the collection gets large.
OrderedDictionary: Represents a collection of key/value pairs that are accessible by
the key or index.
ListDictionary: Implements IDictionary using a singly linked list. Recommended for
collections that typically contain 10 items or less.
Hashtable: Represents a collection of key/value pairs that are organized based on
the hash code of the key.

Q17: You are developing a custom-collection class.
You need to create a method in your class. You need to ensure that the
method you create in your class returns a type that is compatible with the
Foreach statement. Which criterion should the method meet?

A. The method must return a type of either IEnumerator or IEnumerable.

B. The method must return a type of IComparable.

C. The method must explicitly contain a collection.

D. The method must be the only iterator in the class.


Answer: A


Q18: You write the following code.

public delegate void FaxDocs(object sender, FaxArgs args);

You need to create an event that will invoke FaxDocs. Which code segment
should you use?

A. public static event FaxDocs Fax;

B. public static event Fax FaxDocs;

C. public class FaxArgs : EventArgs {
private string coverPageInfo;
public FaxArgs(string coverInfo) {
this.coverPageInfo = coverPageInfo;
}
public string CoverPageInformation {
get {return this.coverPageInfo;}
}}

D. public class FaxArgs : EventArgs {
private string coverPageInfo;
public string CoverPageInformation {
get {return this.coverPageInfo;}
}}

Answer: A


Q19: You are writing a custom dictionary. The custom-dictionary class is
named MyDictionary. You need to ensure that the dictionary is type safe.
Which code segment should you use?

A. class MyDictionary : Dictionary<string, string>

B. class MyDictionary : HashTable

C. class MyDictionary : IDictionary

D. class MyDictionary { ... }
Dictionary<string, string> t = new Dictionary<string, string>();
MyDictionary dictionary = (MyDictionary)t;


Answer: A


Q20: You are developing a custom event handler to automatically print all
open documents. The event handler helps specify the number of copies to
be printed. You need to develop a custom event arguments class to pass as
a parameter to the event handler. Which code segment should you use?

A. public class PrintingArgs
{
                private int copies;

public PrintingArgs(int numberOfCopies)
{
                this.copies = numberOfCopies;
}

public int Copies
{
get
{
                return this.copies;
}
}
}

B. public class PrintingArgs : EventArgs {
private int copies;
public PrintingArgs(int numberOfCopies) {
this.copies = numberOfCopies;
}
public int Copies {
get { return this.copies; }
}
}

C. public class PrintingArgs {
private EventArgs eventArgs;
public PrintingArgs(EventArgs ea) {
this.eventArgs = ea;
}
public EventArgs Args {
get { return eventArgs; }
}
}

D. public class PrintingArgs : EventArgs {
private int copies;
}

Answer: B

Q21: You are developing an application to perform mathematical
calculations. You develop a class named CalculationValues. You write a
procedure named PerformCalculation that operates on an instance of the
class. You need to ensure that the user interface of the application
continues to respond while calculations are being performed. You need to
write a code segment that calls the PerformCalculation procedure to
achieve this goal. Which code segment should you use?

A. private void PerformCalculation() {...}
private void DoWork(){
CalculationValues myValues = new CalculationValues();
Thread newThread = new Thread(new ThreadStart(PerformCalculation));
newThread.Start(myValues);
}

B. private void PerformCalculation() {...}
private void DoWork(){
CalculationValues myValues = new CalculationValues();
ThreadStart delStart = new ThreadStart(PerformCalculation);
Thread newThread = new Thread(delStart);
if (newThread.IsAlive)
{
newThread.Start(myValues);
}
}
C. private void PerformCalculation (CalculationValues values) {...}
private void DoWork(){
CalculationValues myValues = new CalculationValues();
Application.DoEvents();
PerformCalculation(myValues);
Application.DoEvents();
}

D. private void PerformCalculation(object values) {...}
private void DoWork(){
CalculationValues myValues = new CalculationValues();
Thread newThread = new Thread(new ParameterizedThreadStart(PerformCalculation));
newThread.Start(myValues);
}

Answer: D

Q22: You are writing a method to compress an array of bytes. The array is
passed to the method in a parameter named document. You need to
compress the incoming array of bytes and return the result as an array of
bytes. Which code segment should you use?

A. MemoryStream strm = new MemoryStream(document);
DeflateStream deflate = new DeflateStream(strm, CompressionMode.Compress);
byte[] result = new byte[document.Length];
deflate.Write(result, 0, result.Length);
return result;


B. MemoryStream strm = new MemoryStream(document);
DeflateStream deflate = new DeflateStream(strm, CompressionMode.Comress);
deflate.Write(docemtn, 0, document.Length);
deflate.Close();
return strm.ToArray();
C. MemoryStream strm = new MemoryStream();
DeflateStream deflate = new DeflateStream(strm, CompressionMode.Compress);
deflate.Write(decument, 0, decument.Length);
deflate.Close();
return strm.ToArray();


D. MemoryStream inStream = new MemoryStream(document);
DeflateStream deflate = new DeflateStream(inStream, CompressionMode.Compress);
MemoryStream outStream = new MemoryStream();
int b;
while ((b = deflate.ReadByte()) ! = -1) {
outStream.WriteByte((byte)b);
}
return outStream.ToArray();

Answer: C

Explanation: DeflateStream Provides methods and properties for compressing and decompressing streams using the Deflate algorithm. This class represents the Deflate algorithm, an industry standard algorithm for lossless file compression and decompression. It uses a combination of the LZ77 algorithm and Huffman coding.

Q23: You are creating a class named Age. You need to ensure that the Age
class is written such that collections of Age objects can be sorted. Which
code segment should you use?

A. public class Age {
public int Value;
public object CompareTo(object obj) {
if (obj is Age) {
Age _age = (Age) obj;
return Value.ComapreTo(obj);
}
throw new ArgumentException("object not an Age");
}
}

B. public class Age {
public int Value;
public object CompareTo(int iValue) {
try {
return Value.ComapreTo(iValue);
} catch {
throw new ArgumentException("object not an Age");
}
}
}
C. public class Age : IComparable {
public int Value;
public int CompareTo(object obj) {
if (obj is Age) {
Age _age = (Age) obj;
return Value.ComapreTo(_age.Value);
}
throw new ArgumentException("object not an Age");
}
}

D. public class Age : IComparable {
public int Value;
public int CompareTo(object obj) {
try {
return Value.ComapreTo(((Age) obj).Value);
} catch {
return -1;
}
}
}

Answer: C

Embedding configuration, diagnostic and management  features into a .NET Framework application

Q1:(Distinct) You work as a developer at Company.com. You are creating
an application that provides information about the local computer. The
application contains a form that lists each logical drive with the drive
properties, such as type, volume label, and capacity. You are required to
write a procedure that retrieves properties of each logical drive on the local
computer. What should you do?
Arrange the appropriate actions in the correct order.



Q3: (Distinct) You work as a developer at Company.com. You create a
service application that monitors free space on a hard disk drive.
You must ensure that the service application runs in the background and
monitors the free space every minute. What should you do?

Q4: You are using the Microsoft Visual Studio 2005 IDE to examine the
output of a method that returns a string. You assign the output of the
method to a string variable named fName. You need to write a code
segment that prints the following on a single line The message: "Test
Failed: " The value of fName if the value of fName does not equal
"Company" You also need to ensure that the code segment simultaneously
facilitates uninterrupted execution of the application. Which code
segment should you use?

A. Debug.Assert(fName == "Company", "Test Failed: ", fName);

B. Debug.WriteLineIf(fName != "Company", fName, "Test Failed");

C. if (fName != "Company") {
Debug.Print("Test Failed: ");
Debug.Print(fName);
}

D. if (fName != "Company") {
Debug.WriteLine("Test Failed: ");
Debug.WriteLine (fName);
}

Answer: B

\Q5: You are testing a newly developed method named PersistToDB. This
method accepts a parameter of type EventLogEntry. This method does not
return a value. You need to create a code segment that helps you to test
the method. The code segment must read entries from the application log
of local computers and then pass the entries on to the PersistToDB method.
The code block must pass only events of type Error or Warning from the
source MySource to the PersistToDB method.
Which code segment should you use?

A. EventLog myLog = new EventLog("Application", ".");
foreach (EventLogEntry entry in myLog.Entries)
{
if (entry.Source == "MySource")
{
PersistToDB(entry);
} }

B. EventLog myLog = new EventLog("Application", ".");
myLog.Source = "MySource";
foreach (EventLogEntry entry in myLog.Entries)
{
if (entry.EntryType == (EventLogEntryType.Error & EventLogEntryType.Warning))
{
PersistToDB(entry);
} }
C. EventLog myLog = new EventLog("Application", ".");
foreach (EventLogEntry entry in myLog.Entries)
{
if (entry.Source == "MySource")
{
if (entry.EntryType == EventLogEntryType.Error ||
entry.EntryType == EventLogEntryType.Warning)
{
PersistToDB(entry);
}
}
}

D. EventLog myLog = new EventLog("Application", ".");
myLog.Source = "MySource";
foreach (EventLogEntry entry in myLog.Entries)
{
if (entry.EntryType == EventLogEntryType.Error ||
entry.EntryType == EventLogEntryType.Warning)
{
PersistToDB(entry);
}

Answer: C

Q6: You are testing a method that examines a running process. This
method returns an ArrayList containing the name and full path of all
modules that are loaded by the process. You need to list the modules
loaded by a process named C:\TestApps\Process1.exe. Which code
segment should you use?

A. ArrayList ar = new ArrayList();
Process[] procs;
ProcessModuleCollection modules;
procs = Process.GetProcesses(@"Process1");
if (procs.Length > 0) {modules = porcs[0].Modules;
foreach (ProcessModule mod in modules) {
ar.Add(mod.ModuleName);
}}

B. ArrayList ar = new ArrayList();
Process[] procs;
ProcessModuleCollection modules;
procs = Process.GetProcesses(@"C:\TestApps\Process1.exe");
if (procs.Length > 0) {modules = porcs[0].Modules;
foreach (ProcessModule mod in modules) {
ar.Add(mod.ModuleName);
}}
C. ArrayList ar = new ArrayList();
Process[] procs;
ProcessModuleCollection modules;
procs = Process.GetProcessesByName(@"Process1");
if (procs.Length > 0) {
modules = porcs[0].Modules;
foreach (ProcessModule mod in modules) {
ar.Add(mod.FileName);
}}

D. ArrayList ar = new ArrayList();
Process[] procs;
ProcessModuleCollection modules;
procs = Process.GetProcessesByName(@"C:\TestApps\Process1.exe");
if(procs.Length > 0) {
modules = porcs[0].Modules;
foreach (ProcessModule mod in modules) {
ar.Add(mod.FileName);
}}


Answer: C

Q7: You are creating a strong-named assembly named Company1 that will
be used in multiple applications. Company1 will be rebuilt frequently during
the development cycle. You need to ensure that each time the assembly is
rebuilt it works correctly with each application that uses it. You need to
configure the computer on which you develop Company1 such that each
application uses the latest build of Company1.
Which two actions should you perform? (Each correct answer presents part
of the solution. Choose two.)

A. Create a DEVPATH environment variable that points to the build output directory for the strong-named assembly.

B. Add the following XML element to the machine configuration file:

<developmentMode developerInstallation="true"/>

C. Add the following XML element to the machine configuration file:

<dependentAssembly>
<assemblyIdentity name="Company1"
publicKeyToken="32ab4ba45e0a69a1"
language="en-US" version="*.*.*.*" />
<publisherPolicy apply="no" />
</dependentAssembly>
D. Add the following XML element to the configuration file of each application that uses the strong-named assembly:

<supportedRuntime version="*.*.*.*" />

E. Add the following XML element to the configuration file of each application that uses the strong-named assembly:

<dependentAssembly>
<assemblyIdentity name="Company1"
publicKeyToken="32ab4ba45e0a69a1"
language="en-US"
version="*.*.*.*" />
<bindingRedirect newVersion="*.*.*.*"/>
</dependentAssembly>

Answer: A, B
Explanation: DEVPATH is a mechanism to enable debugging of private copies of shared assemblies without affecting running system during development time. Developers might want to make sure that a shared assembly they are building works correctly with multiple applications. Instead of continually putting the assembly in the global assembly cache during the development cycle, the developer can create a DEVPATH environment variable that points to the build output directory for the assembly.


Q8: You are developing an application that receives events
asynchronously. You create a WqlEventQuery instance to specify the events
and event conditions to which the application must respond. You also
create a ManagementEventWatcher instance to subscribe to events
matching the query. You need to identify the other actions you must
perform before the application can receive events asynchronously. Which
two actions should you perform? (Each correct answer presents part of the
solution. Choose two.)

A. Start listening for events by calling the Start method of the ManagementEventWatcher.

B. Set up a listener for events by using the EventArrived event of the ManagementEventWatcher.

C. Use the WaitForNextEvent method of the ManagementEventWatcher to wait for the events.

D. Create an event handler class that has a method that receives an ObjectReadyEventArgs parameter.

E. Set up a listener for events by using the Stopped event of the ManagementEventWatcher.

Answer: A, B
Explanation: ManagementEventWatcher Subscribes to temporary event notifications based on a specified event query.

Q9: You are working on a debug build of an application.
You need to find the line of code that caused an exception to be thrown.
Which property of the Exception class should you use to achieve this goal?

A. Data

B. Message

C. StackTrace

D. Source

Answer: C

Q10: You need to write a code segment that performs the following tasks:

         Retrieves the name of each paused service.
         Passes the name to the Add method of Collection1.

Which code segment should you use?

A. ManagementObjectSearcher searcher = new
ManagementObjectSearcher("Select * from Win32_Service where State = 'Paused'");

foreach (ManagementObject svc in searcher.Get()) {
Collection1.Add(svc["DisplayName"]);
}

B. ManagementObjectSearcher searcher = new
ManagementObjectSearcher( "Select * from Win32_Service", "State = 'Paused'");

foreach (ManagementObject svc in searcher.Get()) {
Collection1.Add(svc["DisplayName"]);
}
C. ManagementObjectSearcher searcher =
new ManagementObjectSearcher("Select * from Win32_Service");

foreach (ManagemetnObject svc in searcher.Get()) {
if ((string) svc["State"] == "'Paused'") {
Collection1.Add(svc["DisplayName"]);
}
}

D. ManagementObjectSearcher searcher = new ManagementObjectSearcher();
searcher.Scope = new ManagementScope("Win32_Service");

foreach (ManagementObject svc in searcher.Get()) {
if ((string)svc["State"] == "Paused") {
Collection1.Add(svc["DisplayName"]);
}
}

Answer: A
Explanation: ManagementObjectSearcher Retrieves a collection of management objects based on a specified query. This class is one of the more commonly used entry points to retrieving management information. For example, it can be used to enumerate all disk drives, network adapters, processes and many more management objects on a system, or to query for all network connections that are up, services that are paused, and so on.
Q11: You create a class library that is used by applications in three
departments of your company. The library contains a Department class
with the following definition.

public class Department {
public string name;
public string manager;
}

Each application uses a custom configuration section to store department-
specific values in the application configuration file as shown in the
following code.

<Department>
<name>Hardware</name>
<manager>Company</manager>
</Department>

You need to write a code segment that creates a Department object
instance by using the field values retrieved from the application
configuration file. Which code segment should you use?
A. public class deptElement : ConfigurationElement {
protected override void DeserializeElement(
XmlReader reader, bool serializeCollectionKey) {
Department dept = new Department();
dept.name = ConfigurationManager.AppSettings["name"];
dept.manager =
ConfigurationManager.AppSettings["manager"];
return dept;
} }


B. public class deptElement: ConfigurationElement {
protected override void DeserializeElement(
XmlReader reader, bool serializeCollectionKey) {
Department dept = new Department();
dept.name = reader.GetAttribute("name");
dept.manager = reader.GetAttribute("manager"); } }
C. public class deptHandler : IConfigurationSectionHandler {
public object Create(object parent, object configContext,
System.Xml.XmlNode section) {
Department dept = new Department();
dept.name = section.SelectSingleNode("name").InnerText;
dept.manager = section.SelectSingleNode("manager").InnerText;
return dept;
} }

D. public class deptHandler : IConfigurationSectionHandler {
public object Create(object parent, object configContext,
System.Xml.XmlNode section) {
Department dept = new Deprtment();
dept.name = section.Attributes["name"].Value;
dept.manager = section.Attributes["manager"].Value;
return dept;
} }


Answer: C

Q12: Your company uses an application named Application1 that was
compiled by using the .NET Framework version 1.0. The application
currently runs on a shared computer on which the .NET Framework
versions 1.0 and 1.1 are installed. You need to move the application to a
new computer on which the .NET Framework versions 1.1 and 2.0 are
installed. The application is compatible with the .NET Framework 1.1, but it
is incompatible with the .NET Framework 2.0. You need to ensure that the
application will use the .NET Framework version 1.1 on the new computer.
What should you do?
A. Add the following XML element to the application configuration file.
<configuration>
<startup> <supportedRuntime version="1.1.4322" />
</startup> </configuration>
B. Add the following XML element to the application configuration file.
<configuration>
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Application1"
publicKeyToken="32ab4ba45e0a69a1" culture="neutral" />
<bindingRedirect oldVersion="1.0.3075.0" newVersion="1.1.4322.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
C. Add the following XML element to the machine configuration file.
<configuration>
<startup>
<requiredRuntime version="1.1.4322" />
</startup>
</configuration>

D. Add the following XML element to the machine configuration file.
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>

<assemblyIdentity name="Application1"
publicKeyToken="32ab4ba45e0a69a1" culture="neutral" />

<bindingRedirect oldVersion="1.0.3075.0" newVersion="1.1.4322.0"/>

</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

Answer: A

Q13: You are creating an application that retrieves values from a custom
section of the application configuration file. The custom section uses XML
as shown in the following block.

<ProjectSection name="ProjectCompany">
<role name="administrator" />
<role name="manager" />
<role name="support" />
</ProjectSection>

You need to write a code segment to define a class named Role. You need
to ensure that the Role class is initialized with values that are retrieved
from the custom section of the configuration file. Which code segment
should you use?

A. public class Role : ConfigurationElement {
internal string _ElementName = "name";
[ConfigurationProperty("role")]
public string Name {
get {
return ((string)base["role"]);
}
}
}

B. public class Role : ConfigurationElement {
internal string _ElementName = "role";
[ConfigurationProperty("name", RequiredValue = true)]
public string Name {
get {
return ((string)base["name"]);
} } }

C. public class Role : ConfigurationElement {
internal string _ElementName = "role";
private string _name;
[ConfigurationProperty("name")]
public string Name {
get {
return _name;
} } }

D. public class Role : ConfigurationElement {
internal string _ElementName = "name";
private string _name;
[ConfigurationProperty("role", RequiredValue = true)]
public string Name {
get {
return _name;
} } }

Answer: B

Q14: You are creating an application that lists processes on remote
computers. The application requires a method that performs the following
tasks: Accept the remote computer name as a string parameter named
strComputer.Return an ArrayList object that contains the names of all
processes that are running on that computer. You need to write a code
segment that retrieves the name of each process that is running on the
remote computer and adds the name to the ArrayList object. Which code
segment should you use?


A. ArrayList al = new ArrayList();
Process[] procs = Process.GetProcessesByName(strComputer);
foreach (Process proc in procs) {
al.Add(proc);}


B. ArrayList al = new ArrayList();
Process[] procs = Process.GetProcesses(strComputer);
foreach(Process proc in procs) {
al.Add(proc);}

C. ArrayList al = new ArrayList();
Process[] procs = Process.GetProcessesByName(strComputer);
foreach (Process proc in procs) {
al.Add(proc.ProcessName);}

D. ArrayList al = new ArrayList();
Process[] procs = Process.GetProcesses(strComputer);
foreach(Process proc in procs) {
al.Add(proc.ProcessName);}


Answer: D

Implementing serialization and input/output functionality in a .NET Framework application

Q1: You need to write a code segment that transfers the first 80 bytes
from a stream variable named stream1 into a new byte array named
byteArray. You also need to ensure that the code segment assigns the
number of bytes that are transferred to an integer variable named
bytesTransferred. Which code segment should you use?

A. bytesTransferred = stream1.Read(byteArray, 0, 80);

B. for (int i = 0; i < 80; i++) {
stream1.WriteByte(byteArray[i]);
bytesTransferred = i;
if (!stream1.CanWrite) {
break;
}}

C. while (bytesTransferred < 80) {
stream1.Seek(1, SeekOrigin.Current);
byteArray[bytesTransferred++] = Convert.ToByte(stream1.ReadByte());
}

D. stream1.Write(byteArray, 0, 80);
bytesTransferred = byteArray.Length;

Answer: A

Q2: You are defining a class named CompanyClass that contains several
child objects. CompanyClass contains a method named ProcessChildren
that performs actions on the child objects. CompanyClass objects will be
serializable. You need to ensure that the ProcessChildren method is
executed after the CompanyClass object and all its child objects are
reconstructed. Which two actions should you perform? (Each correct
answer presents part of the solution. Choose two.)

A. Apply the OnDeserializing attribute to the ProcessChildren method.

B. Specify that CompanyClass implements the IDeserializationCallback interface.

C. Specify that CompanyClass inherits from the ObjectManager class.

D. Apply the OnSerialized attribute to the ProcessChildren method.

E. Create a GetObjectData method that calls ProcessChildren.

F. Create an OnDeserialization method that calls ProcessChildren.


Answer: B, F


Q3: You need to write a code segment that transfers the contents of a
byte array named dataToSend by using a NetworkStream object named
netStream. You need to use a cache of size 8,192 bytes. Which code
segment should you use?

A. MemoryStream memStream = new MemoryStream(8192);
memStream.Write(dataToSend, 0, (int) netStream.Length);

B. MemoryStream memStream = new MemoryStream(8192);
netStream.Write(dataToSend, 0, (int) memStream.Length);

C. BufferedStream bufStream = new BufferedStream(netStream, 8192);
bufStream.Write(dataToSend, 0, dataToSend.Length);

D. BufferedStream bufStream = new BufferedStream(netStream);
bufStream.Write(dataToSend, 0, 8192);


Answer: C


Q4: You need to read the entire contents of a file named Message.txt into
a single string variable. Which code segment should you use?

A. string result = null;
StreamReader reader = new StreamReader("Message.txt");
result = reader.Read().ToString();

B. string result = null;
StreamReader reader = new StreamReader("Message.txt");
result = reader.ReadToEnd();

C. string result = string.Empty;
StreamReader reader = new StreamReader("Message.txt");
while(!reader.EndOfStream) {
result += reader.ToString();
}

D. string result = null;
StreamReader reader = new StreamReader("Message.txt");
result = reader.ReadLine();

Answer: B

Q5: You are writing an application that uses SOAP to exchange data with
other applications. You use a Department class that inherits from ArrayList
to send objects to another application. The Department object is named
dept. You need to ensure that the application serializes the Department
object for transport by using SOAP. Which code should you use?

A. SoapFormatter formatter = new SoapFormatter();
byte[] buffer = new byte[dept.Capacity];
MemoryStream stream = new MemoryStream(buffer);
foreach (object o in dept) {formatter.Serialize(stream, o);}

B. SoapFormatter formatter = new SoapFormatter();
byte[] buffer = new byte[dept.Capacity];
MemoryStream stream = new MemoryStream(buffer);
formatter.Serialize(stream, dept);

C. SoapFormatter formatter = new SoapFormatter();
MemoryStream stream = new MemoryStream();
foreach (object o in dept) { Formatter.Serialize(stream, o);}

D. SoapFormatter formatter = new SoapFormatter();
MemoryStream stream = new MemoryStream();
formatter.Serialize(stream, dept);

Answer: D


Q6: You need to serialize an object of type List<int> in a binary format.
The object is named data. Which code segment should you use?

A. BinaryFormatter formatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
formatter.Serialize(stream, data);

B. BinaryFormatter formatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
for (int i = 0; i < data.Count, i++) {
formatter.Serialize(stream, data[i]);}

C. BinaryFormatter formatter = new BinaryFormatter();
byte[] buffer = new byte[data.Count];
MemoryStream stream = new MemoryStream(buffer, true);
formatter.Serialize(stream, data);

D. BinaryFormatter formatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
data.ForEach(delegate(int num)
{ formatter.Serialize(stream, data); }
);

Answer: A


Q7: You create the definition for a Vehicle class by using the following
code segment.
public class Vehicle {
[XmlAttribute(AttributeName = "category")]
public string vehicleType;
public string model;
[XmlIgnore]
public int year;
[XmlElement(ElementName = "mileage")]
public int miles;
public ConditionType condition;
public Vehicle() {
}
public enum ConditionType {
[XmlEnum("Poor")] BelowAverage,
[XmlEnum("Good")] Average,
[XmlEnum("Excellent")] AboveAverage
}}
You create an instance of the Vehicle class. You populate the public fields
of the Vehicle class instance as shown in the following table:
You need to identify the XML block that is produced when this Vehicle class
instance is serialized.
Which block of XML represents the output of serializing the Vehicle
instance?

A. <?xml version="1.0" encoding="utf-8"?>
<Vehicle xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
vehicleType="car">
<model>racer</model>
<miles>15000</miles>
<condition>AboveAverage</condition>
</Vehicle>

B. <?xml version="1.0" encoding="utf-8"?>
<Vehicle xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
category="car">
<model>racer</model>
<mileage>15000</mileage>
<condition>Excellent</condition>
</Vehicle>
C. <?xml version="1.0" encoding="utf-8"?>
<Vehicle xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
category="car">
<model>racer</model>
<mileage>15000</mileage>
<conditionType>Excellent</conditionType>
</Vehicle>

D. <?xml version="1.0" encoding="utf-8"?>
<Vehicle xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<category>car</category>
<model>racer</model>
<mileage>15000</mileage>
<condition>Excellent</condition>
</Vehicle>


Answer: B

Q8: You create a class library that contains the class hierarchy defined in
the following code segment. (Line numbers are included for reference
only.)
01 public class Group {
02 public Employee[] Employees;
03 }
04 public class Employee {
05 public string Name;
06 }
07 public class Manager : Employee {
08 public int Level;
09 }

You create an instance of the Group class. You populate the fields of the
instance. When you attempt to serialize the instance by using the Serialize
method of the XmlSerializer class, you receive InvalidOperationException.
You also receive the following error message: "There was an error
generating the XML document."
You need to modify the code segment so that you can successfully serialize
instances of the Group class by using the XmlSerializer class. You also need
to ensure that the XML output contains an element for all public fields in
the class hierarchy. What should you do?

A. Insert the following code between lines 1 and 2 of the code segment:
[XmlArrayItem(Type = typeof(Employee))]
[XmlArrayItem(Type = typeof(Manager))]

B. Insert the following code between lines 1 and 2 of the code segment:
[XmlElement(Type = typeof(Employees))]

C. Insert the following code between lines 1 and 2 of the code segment:
[XmlArray(ElementName="Employees")]

D. Insert the following code between lines 3 and 4 of the code segment:
[XmlElement(Type = typeof(Employee))]
And Insert the following code between lines 6 and 7 of the code segment:
[XmlElement(Type = typeof(Manager))]

Answer: A

Q9: You are creating a class that performs complex financial calculations.
The class contains a method named GetCurrentRate that retrieves the
current interest rate and a variable named currRate that stores the current
interest rate. You write serialized representations of the class.
You need to write a code segment that updates the currRate variable with
the current interest rate when an instance of the class is deserialized.
Which code segment should you use?

A. [OnSerializing]
internal void UpdateValue (StreamingContext context) {
currRate = GetCurrentRate();}

B. [OnSerializing]
internal void UpdateValue(SerializationInfo info) {
info.AddValue("currentRate", GetCurrentRate());}

C. [OnDeserializing]
internal void UpdateValue(SerializationInfo info) {
info.AddValue("currentRate", GetCurrentRate());}

D. [OnDeserialized]
internal void UpdateValue(StreamingContext context) {
currRate = GetCurrentRate();}

Answer: D

Q10: You are testing a component that serializes the Meeting class
instances so that they can be saved to the file system. The Meeting class
has the following definition:
public class Meeting {
private string title;
public int roomNumber;
public string[] invitees;
public Meeting(){
}
public Meeting(string t){
title = t;
} }
The component contains a procedure with the following code segment.
Meeting myMeeting = new Meeting("Goals");
myMeeting.roomNumber = 1100;
string[] attendees = new string[2]{"Company", "Mary"};
myMeeting.invitees = attendees;
XmlSerializer xs = new XmlSerializer(typeof(Meeting));
StreamWriter writer = new StreamWriter(@"C:\Meeting.xml");
Xs.Serialize(writer, myMeeting);
writer.Close();
You need to identify the XML block that is written to the C:\Meeting.xml file
as a result of running this procedure. Which XML block represents the
content that will be written to the C:\Meeting.xml file?

A. <?xml version="1.0" encoding="utf-8"?>
<Meeting xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<title>Goals</title>
<roomNumber>1100</roomNumber>
<invitee>Company</invitee>
<invitee>Mary</invitee>
</Meeting>

B. <?xml version="1.0" encoding="utf-8"?>
<Meeting xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<roomNumber>1100</roomNumber>
<invitees>
<string>Company</string>
<string>Mary</string>
</invitees>
</Meeting>

C. <?xml version="1.0" encoding="utf-8"?>
<Meeting xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
title="Goals">
<roomNumber>1100</roomNumber>
<invitees>
<string>Company</string>
<string>Mary</string>
</invitees>
</Meeting>

D. <?xml version="1.0" encoding="utf-8"?>
<Meeting xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<roomNumber>1100</roomNumber>
<invitees>
<string>Company</string>
</invitees>
<invitees>
<string>Mary</string>
</invitees>
</Meeting>

Answer: B


Improving the security of the .NET Framework applications by using the .NET Framework 2.0 security features

Q1: You are developing a class library that will open the network socket
connections to computers on the network. You will deploy the class library
to the global assembly cache and grant it full trust.
You write the following code to ensure usage of the socket connections.

SocketPermission permission = new SocketPermission(PermissionState.Unrestricted);
permission.Assert();

Some of the applications that use the class library might not have the
necessary permissions to open the network socket connections.
You need to cancel the assertion.
Which code segment should you use?
A. CodeAccessPermission.RevertAssert();
B. CodeAccessPermission.RevertDeny();
C. permission.Deny();
D. permission.PermitOnly();
Answer: A

Explanation:
CodeAccessPermission.RevertAssert causes any previous Assert for the current frame to be removed and no longer in effect.
CodeAccessPermission.RevertDeny causes any previous Deny for the current frame to be removed and no longer in effect.
SocketPermission.Deny method prevents callers higher in the call stack from using the code that calls this method to access the resource specified by the current instance.
SocketPermission.PermitOnly Prevents callers higher in the call stack from using the code that calls this method to access all resources except for the resource specified by the current instance.

Q2: You are developing an application that will use custom authentication
and role-based security. You need to write a code segment to make the
runtime assign an unauthenticated principal object to each running thread.
Which code segment should you use?

A. AppDomain domain = AppDomain.CurrentDomain;
domain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);

B. AppDomain domain = AppDomain.CurrentDomain;
domain.SetThreadPrincipal(new WindowsPrincipal(null));

C. AppDomain domain = AppDomain.CurrentDomain;
domain.SetAppDomainPolicy(PolicyLevel.CreateAppDomainLevel());

D. AppDomain domain = AppDomain.CurrentDomain;
domain.SetPrincipalPolicy(PrincipalPolicy.UnauthenticatedPrincipal);


Answer: D
Explanation: PrincipalPolicy.UnauthenticatedPrincipal represents principal and identity objects for the unauthenticated entity should be created. An unauthenticated entity has Name set to the empty string ("") and IsAuthenticated set to false.

Q3: You work as a developer at Company.com. You are creating an
assembly named Company1. Company1 contains a public method.
The global cache contains a second assembly named Company2.
You must ensure that the public method is only called from Company2.
Which permission class should you use?


A. GacIdentityPermission

B. PublisherIdentityPermission

C. DataProtectionPermission

D. StrongNameIdentityPermission

Answer: D
Explanation:
GacIdentityPermission defines the identity permission for files originating in the global assembly cache. Files are either in the global assembly cache, or they are not. There are no variations to the permission granted, so all GacIdentityPermission objects are equal.
PublisherIdentityPermission represents the identity of a software publisher.
DataProtectionPermission controls the ability to access encrypted data and memory.
StrongNameIdentityPermission defines the identity permission for strong names.

Q4: You are developing a method to hash data with the Secure Hash
Algorithm. The data is passed to your method as a byte array named
message. You need to compute the hash of the incoming parameter by
using SHA1. You also need to place the result into a byte array named
hash. Which code segment should you use?

A. SHA1 sha = new SHA1CryptoServiceProvider();
byte[] hash = null;
sha.TransformBlock(message, 0, message.Length, hash, 0);

B. SHA1 sha = new SHA1CryptoServiceProvider();
byte[] hash = BitConverter.GetBytes(sha.GetHashCode());

C. SHA1 sha = new SHA1CryptoServiceProvider();
byte[] hash = sha.ComputeHash(message);

D. SHA1 sha = new SHA1CryptoServiceProvider();
sha.GetHashCode();
byte[] hash = sha.Hash;


Answer: C

Q5: You are developing a class library. Portions of your code need to
access system environment variables.
You need to force a runtime SecurityException only when callers that are
higher in the call stack do not have the necessary permissions.
Which call method should you use?

A. set.Demand();

B. set.Assert();

C. set.PermitOnly();

D. set.Deny();

Answer: A


Q6: You are developing a method to hash data for later verification by
using the MD5 algorithm. The data is passed to your method as a byte array
named message. You need to compute the hash of the incoming parameter
by using MD5. You also need to place the result into a byte array.
Which code segment should you use?

A. HashAlgorithm algo = HashAlgorithm.Create("MD5");
byte[] hash = algo.ComputeHash(message);

B. HashAlgorithm algo = HashAlgorithm.Create("MD5");
byte[] hash = BitConverter.GetBytes(algo.GetHashCode());

C. HashAlgorithm algo;
algo = HashAlgorithm.Create(message.ToString());
byte[] hash = algo.Hash;

D. HashAlgorithm algo = HashAlgorithm.Create("MD5");
byte[] hash = null;
algo.TransformBlock(message, 0, message.Length, hash, 0);


Answer: A

Q7: You are changing the security settings of a file named MyData.xml.
You need to preserve the existing inherited access rules. You also need to
prevent the access rules from inheriting changes in the future.
Which code segment should you use?

A. FileSecurity security = new FileSecurity("mydata.xml", AccessControlSections.All);
security.SetAccessRuleProtection(true, true);
File.SetAccessControl("mydata.xml", security);

B. FileSecurity security = new FileSecurity();
security.SetAccessRuleProtection(true, true);
File.SetAccessControl("mydata.xml", security);

C. FileSecurity security = File.GetAccessControl("mydata.xml");
security.SetAccessRuleProtection(true, true);

D. FileSecurity security = File.GetAccessControl("mydata.xml");
security.SetAuditRuleProtection(true, true);
File.SetAccessControl("mydata.xml", security);


Answer: A

Q8: You are developing a server application that will transmit sensitive
information on a network. You create an X509Certificate object named
certificate and a TcpClient object named client. You need to create an
SslStream to communicate by using the Transport Layer Security 1.0
protocol. Which code segment should you use?

A. SslStream ssl = new SslStream(client.GetStream());
ssl.AuthenticateAsServer(certificate, false, SslProtocols.None, true);

B. SslStream ssl = new SslStream(client.GetStream());
ssl.AuthenticateAsServer(certificate, false, SslProtocols.Ssl3, true);

C. SslStream ssl = new slStream(client.GetStream());
ssl.AuthenticateAsServer(certificate, false, SslProtocols.Ssl2, true);

D. SslStream ssl = new SslStream(client.GetStream());
ssl.AuthenticateAsServer(certificate, false, SslProtocols.Tls, true);


Answer: D

Q9: You are developing a method to encrypt sensitive data with the Data
Encryption Standard (DES) algorithm. Your method accepts the following
parameters:
         The byte array to be encrypted, which is named message.
         An encryption key, which is named key
         An initialization vector, which is named iv

You need to encrypt the data. You also need to write the encrypted data to
a MemoryStream object. Which code segment should you use?

A. DES des = new DESCryptoServiceProvider();
des.BlockSize = message.Length;
ICryptoTransform crypto = des.CreateEncryptor(key, iv);
MemoryStream cipherStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(cipherStream, crypto, CryptoStreamMode.Write);
cryptoStream.Write(message, 0, message.Length);

B. DES des = new DESCryptoServiceProvider();
ICryptoTransform crypto = des.CreateDecryptor(key, iv);
MemoryStream cipherStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(cipherStream, crypto, CryptoStreamMode.Write);
cryptoStream.Write(message, 0, message.Length);

C. DES des = new DESCryptoServiceProvider();
ICryptoTransform crypto = des.CreateEncryptor();
MemoryStream cipherStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(cipherStream, crypto, CryptoStreamMode.Write);
cryptoStream.Write(message, 0, message.Length);

D. DES des = new DESCryptoServiceProvider();
ICryptoTransform crypto = des.CreateEncryptor(key, iv);
MemoryStream cipherStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(cipherStream, crypto, CryptoStreamMode.Write);
cryptoStream.Write(message, 0, message.Length);


Answer: D

Q10: You are creating a new security policy for an application domain.
You write the following lines of code.

PolicyLevel policy = PolicyLevel.CreateAppDomainLevel();
PolicyStatement noTrustStatement = new PolicyStatement(
policy.GetNamedPermissionSet("Nothing"));
PolicyStatement fullTrustStatement = new PolicyStatement(
policy.GetNamedPermissionSet("FullTrust"));

You need to arrange code groups for the policy so that loaded assemblies
default to the Nothing permission set. If the assembly originates from a
trusted zone, the security policy must grant the assembly the FullTrust
permission set. Which code segment should you use?

A. CodeGroup group1 = new FirstMatchCodeGroup(
new ZoneMembershipCondition(SecurityZone.Trusted), fullTrustStatement);
CodeGroup group2 = new UnionCodegroup(new AllMembershipCondition(),
noTrustStatement);
group1.AddChild(group2);

B. CodeGroup group1 = new FirstMatchCodeGroup(new AllMembershipCondition(),
noTrustStatement);
CodeGroup group2 = new UnionCodeGroup(new ZoneMembershipCondition(SecurityZone.Trusted), fullTrustStatement);
group1.AddChild(group2);

C. CodeGroup group = new UnionCodeGroup(new ZoneMembershipCondition(SecurityZone.Trusted), fullTrustStatement);

D. CodeGroup group = new FirstMatchCodeGroup( new AllMembershipCondition(), noTrustStatement);


Answer: B

Q11: You are developing a method to decrypt data that was encrypted
with the Triple DES Algorithm. The method accepts the following
parameters:
         The byte array to be decrypted, which is named cipherMessage
         The key, which is named key
         An initialization vector, which is named iv
You need to decrypt the message by using the TripleDES class and place
the result in a string. Which code segment should you use?
A. TripleDES des = new TripleDESCryptoServiceProvider();
des.BlockSize = cipherMessage.Length;
ICryptoTransform crypto = des.CreateDecryptor(key, iv);
MemoryStream cipherStream = new MemoryStream(cipherMessage);
CryptoStream cryptoStream = new CryptoStream( cipherStream, crypto, CryptoStreamMode.Read);
string message;
message = new StreamReader(cryptoStream).ReadToEnd();

B. TripleDES des = new TripleDESCryptoServiceProvider();
des.FeedbackSize = cipherMessage.Length;
ICryptoTransform crypto = des.CreateDecryptor(key, iv);
MemoryStream cipherStream = new MemoryStream(cipherMessage);
CryptoStream cryptoStream = new CryptoStream(cipherStream, crypto, CryptoStreamMode.Read);
string message;
message = new StreamReader(cryptoStream).ReadToEnd();
C. TripleDES des = new TripleDESCryptoServiceProvider();
ICryptoTransform crypto = des.CreateDecryptor();
MemoryStream cipherStream = new MemoryStream(cipherMessage);
CryptoStream cryptoStream = new CryptoStream( cipherStream, crypto, CryptoStreamMode.Read);
string message;
message = new StreamReader(cryptoStream).ReadToEnd();


D. TripleDES des = new TripleDESCryptoServiceProvider();
ICryptoTransform crypto = des.CreateDecryptor(key, iv);
MemoryStream cipherStream = new MemoryStream(cipherMessage);
CryptoStream cryptoStream = new CryptoStream( cipherStream, crypto, CryptoStreamMode.Read);
string message;
message = new StreamReader(cryptoStream).ReadToEnd();

Answer: D

Q12: You are writing a method that returns an ArrayList named al. You
need to ensure that changes to the ArrayList are performed in a thread-
safe manner. Which code segment should you use?

A. ArrayList al = new ArrayList();
lock (al.SyncRoot){
return al;}

B. ArrayList al = new ArrayList();
lock (al.SyncRoot.GetType()){
return al;}

C. ArrayList al = new ArrayList();
Monitor.Enter(al);
Monitor.Exit(al);
return al;

D. ArrayList al = new ArrayList();
ArrayList sync_al = ArrayList.Synchronized(al);
return sync_al;


Answer: D

Q13: You create a method that runs by using the credentials of the end
user. You need to use Microsoft Windows groups to authorize the user. You
must add a code segment that identifies whether a user is in the local
group named Clerk. Which code segment should you use?

A. WindowsIdentity currentUser = WindowsIdentity.GetCurrent();
foreach(IdentityReference grp in currentUser.Groups) {
NTAccount grpAccount = ((NTAccount)grp.Translate(typeof(NTAccount)));
isAuthorized = grpAccount.Value.Equals(Environment.MachineName + @"\Clerk");
if(isAuthorized)
break;}

B. WindowsPrincipal currentUser = (WindowsPrincipal)Thread.CurrentPrincipal;
isAuthorized = currentUser.IsInRole("Clerk");

C. GenericPrincipal currentUser = (GenericPrincipal)Thread.CurrentPrincipal;
isAuthorized = currentUser.IsInRole("Clerk");

D. WindowsPrincipal currentUser = (WindowsPrincipal)Thread.CurrentPrincipal;
isAuthorized = currentUser.IsInRole(Environment.MachineName);


Answer: B

Q14: You are writing code for user authentication and authorization. The
username, password, and roles are stored in your application data store.
You need to establish a user security context that will be used for
authorization checks such as IsInRole. You write the following code
segment to authorize the user.
if (!TestPassword(userName, password))
throw new Exception("could not authenticate user");
String[] userRolesArray = LookupUserRoles(userName);
You need to complete this code so that it establishes the user security
context. Which code segment should you use?
A. GenericIdentity ident = new GenericIdentity(userName);
GenericPrincipal currentUser = new GenericPrincipal(ident, userRolesArray);
Thread.CurrentPrincipal = currentUser;
B. WindowsIdentity ident = new WindowsIdentity(userName);
WindowsPrincipal currentUser = new WindowsPrincipal(ident);
Thread.CurrentPrincipal = currentUser;
C. NTAccount userNTName = new NTAccount(userName);
GenericIdentity ident = new GenericIdentity(userNTName.Value);
GenericPrincipal currentUser = new GenericPrincipal(ident, userRolesArray);
Thread.CurrentPrincipal = currentUser;
D. IntPtr token = IntPtr.Zero;
token = LogonUserUsingInterop(username, encryptedPassword);
WindowsImpersonationContext ctx = WindowsIdentity.Impersonate(token);

Answer: A


Implementing interoperability, reflection, and mailing functionality in a .NET Framework application

Q1: You are developing a method to call a COM component. You need to
use declarative security to explicitly request the runtime to perform a full
stack walk. You must ensure that all callers have the required level of trust
for COM interop before the callers execute your method. Which attribute
should you place on the method?

A. [SecurityPermission(SecurityAction.Demand,
Flags=SecurityPermissionFlag.UnmanagedCode)]

B. [SecurityPermission(SecurityAction.LinkDemand,
Flags=SecurityPermissionFlag.UnmanagedCode)]

C. [SecurityPermission(SecurityAction.Assert,
Flags = SecurityPermissionFlag.UnmanagedCode)]

D. [SecurityPermission(SecurityAction.Deny,
Flags = SecurityPermissionFlag.UnmanagedCode)]


Answer: A

Q2: You create an application to send a message by e-mail. An SMTP
server is available on the local subnet. The SMTP server is named
smtp.Company.com. To test the application, you use a source address,
me@Company.com, and a target address, you@Company.com.
You need to transmit the e-mail message. Which code segment should you
use?

A. MailAddress addrFrom = new MailAddress("me@Company.com", "Me");
MailAddress addrTo         = new MailAddress("you@Company.com", "You");
MailMessage message      = new MailMessage(addrFrom, addrTo);
message.Subject             = "Greetings!";
message.Body                 = "Test";
message.Dispose();

B. string strSmtpClient     = "mstp.Company.com";
string strFrom                 = "me@Company.com";
string strTo                     = "you@Company.com";
string strSubject              = "Greetings!";
string strBody                  = "Test";
MailMessage msg             = new MailMessage(strFrom, strTo, strSubject, strSmtpClient);
C. MailAddress addrFrom          = new MailAddress("me@Company.com");
MailAddress addrTo                  = new MailAddress("you@Company.com");
MailMessage message               = new MailMessage(addrFrom, addrTo);
message.Subject                      = "Greetings!";
message.Body                          = "Test";
SmtpClient client                      = new SmtpClient("smtp.Company.com");
client.Send(message);

D. MailAddress addrFrom           = new MailAddress("me@Company.com", "Me");
MailAddress addrTo                   = new MailAddress("you@Company.com", "You");
MailMessage message                = new MailMessage(addrFrom, addrTo);
message.Subject                       = "Greetings!";
message.Body                           = "Test";
SocketInformation info               = new SocketInformation();
Socket client                             = new Socket(info);
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
byte[] msgBytes                        = enc.GetBytes(message.ToString());
client.Send(msgBytes);


Answer: C

Q3: You need to write a code segment that will create a common
language runtime (CLR) unit of isolation within an application. Which code
segment should you use?

A. AppDomainSetup mySetup = AppDomain.CurrentDomain.SetupInformation;
mySetup.ShadowCopyFiles = "true";

B. System.Diagnostics.Process myProcess;
myProcess = new System.Diagnostics.Process();

C. AppDomain domain;
domain = AppDomain.CreateDomain("CompanyDomain"):

D. System.ComponentModel.Component myComponent;
myComponent = new System.ComponentModel.Component();


Answer: C


Q4: You are developing an application that dynamically loads assemblies
from an application directory.
You need to write a code segment that loads an assembly named
Company1.dll into the current application domain. Which code segment
should you use?

A. AppDomain domain = AppDomain.CurrentDomain;
string myPath = Path.Combine(domain.BaseDirectory, "Company1.dll");
Assembly asm = Assembly.LoadFrom(myPath);

B. AppDomain domain = AppDomain.CurrentDomain;
string myPath = Path.Combine(domain.BaseDirectory, "Company1.dll");
Assembly asm = Assembly.Load(myPath);

C. AppDomain domain = AppDomain.CurrentDomain;
string myPath = Path.Combine(domain.DynamicDirectory, "Company1.dll");
Assembly asm = AppDomain.CurrentDomain.Load(myPath);

D. AppDomain domain = AppDomain.CurrentDomain;
Assembly asm = domain.GetData("Company1.dll");

Answer: A

Q5: You are creating a class that uses unmanaged resources. This class
maintains references to managed resources on other objects. You need to
ensure that users of this class can explicitly release resources when the
class instance ceases to be needed. Which three actions should you
perform? (Each correct answer presents part of the solution. Choose
three.)

A. Define the class such that it inherits from the WeakReference class.

B. Define the class such that it implements the IDisposable interface.

C. Create a class destructor that calls methods on other objects to release the managed resources.

D. Create a class destructor that releases the unmanaged resources.

E. Create a Dispose method that calls System.GC.Collect to force garbage collection.

F. Create a Dispose method that releases unmanaged resources and calls methods on other objects to release the managed resources.

Answer: B, D, F

Q6: You write a class named Employee that includes the following code
segment.

public class Employee
{
string employeeId, employeeName, jobTitleName;

public string GetName()
{
                return employeeName;
}

public string GetTitle()
{
                return jobTitleName;
}

}

You need to expose this class to COM in a type library. The COM interface must
also facilitate forward-compatibility across new versions of the Employee class.
You need to choose a method for generating the COM interface. What should you
do?


A. Add the following attribute to the class definition.
[ClassInterface(ClassInterfaceType.None)]
public class Employee {

B. Add the following attribute to the class definition.
[ClassInterface(ClassInterfaceType.AutoDual)]
public class Employee {

C. Add the following attribute to the class definition.
[ComVisible(true)]
public class Employee {

D. Define an interface for the class and add the following attribute to the class
definition.
[ClassInterface(ClassInterfaceType.None)]
public class Employee : IEmployee {


Answer: D

Q7: You use Reflection to obtain information about a method named
MyMethod. You need to ascertain whether MyMethod is accessible to a
derived class. What should you do?


A. Call the IsAssembly property of the MethodInfo class.

B. Call the IsVirtual property of the MethodInfo class.

C. Call the IsStatic property of the MethodInfo class.

D. Call the IsFamily property of the MethodInfo class.


Answer: D

Q8: You write the following code segment to call a function from the
Win32 Application Programming Interface (API) by using platform invoke.

string personName = "N?el";
string msg = "Welcome" + personName + "to club"!";
bool rc = User32API.MessageBox(0, msg, personName, 0);

You need to define a method prototype that can best marshal the string
data. Which code segment should you use?

A. [DllImport("user32", CharSet = CharSet.Ansi)]
public static extern bool MessageBox(int hWnd, string text, string caption, uint type);
}

B. [DllImport("user32", EntryPoint = "MessageBoxA", CharSet = CharSet.Ansi)]
public static extern bool MessageBox(int hWnd,
[MarshalAs(UnmanagedType.LPWStr)]string text,
[MarshalAs(UnmanagedType.LPWStr)]string caption,
uint type);
}
C. [DllImport("user32", CharSet = CharSet.Unicode)]
public static extern bool MessageBox(int hWnd, string text, string caption, uint type);
}

D. [DllImport("user32", EntryPoint = "MessageBoxA", CharSet = CharSet.Unicode)]
public static extern bool MessageBox(int hWnd,
[MarshalAs(UnmanagedType.LPWStr)]string text,
[MarshalAs(UnmanagedType.LPWStr)]string caption,
uint type);
}

Answer: C

Q9: You need to create a class definition that is interoperable along with
COM. You need to ensure that COM applications can create instances of the
class and can call the GetAddress method. Which code segment should you
use?

A. public class Customer {
string addressString;
public Customer(string address) { addressString = address; }
public string GetAddress() { return addressString; }}

B. public class Customer {
static string addressString;
public Customer() { }
public static string GetAddress() { return addressString; }}

C. public class Customer {
string addressString;
public Customer() { }
public string GetAddress() { return addressString; }}

D. public class Customer {
string addressString;
public Customer() { }
internal string GetAddress() { return addressString; }}

Answer: C

Q10: You write the following code to call a function from the Win32
Application Programming Interface (API) by using platform invoke.

int rc = MessageBox(hWnd, text, caption, type);

You need to define a methon prototype. Which code segment should you
use?

A. [DllImport("user32")]
public static extern int MessageBox(int hWnd, String text, String caption, uint type);

B. [DllImport("user32")]
public static extern int MessageBoxA(int hWnd, String text, String caption, uint type);

C. [DllImport("user32")]
public static extern int Win32API_User32_MessageBox(int hWnd, String text, String caption, uint type);

D. [DllImport(@"C:\WINDOWS\system32\user32.dll")]
public static extern int MessageBox(int hWnd, String text, String caption, uint type);

Answer: A


Q11: You need to create a dynamic assembly named MyAssembly. You also
need to save the assembly to disk. Which code segment should you use?

A. AssemblyName myAssemblyName = new AssemblyName();
myAssemblyName.Name = "MyAssembly";
AssemblyBuilder myAssemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly
(myAssemblyName, AssemblyBuilderAccess.Run);
myAssemblyBuilder.Save("MyAssembly.dll");

B. AssemblyName myAssemblyName = new AssemblyName();
myAssemblyName.Name = "MyAssembly";
AssemblyBuilder myAssemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly
(myAssemblyName, AssemblyBulderAccess.Save);
myAssemblyBuilder.Save("MyAssembly.dll");

C. AssemblyName myAssemblyName = new AssemblyName();
AssemblyBuilder myAssemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly
(myAssemblyName, AssemblyBuilderAccess.RunAndSave);
myAssemblyBuilder.Save("MyAssembly.dll");

D. AssemblyName myAssemblyName = new AssemblyName("MyAssembly");
AssemblyBuilder myAssemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly
(myAssemblyName, AssemblyBuilderAccess.Save);
myAssemblyBuilder.Save("c:\\MyAssembly.dll");

Answer: B

Q12: You need to call an unmanaged function from your managed code by
using platform invoke services. What should you do?

A. Create a class to hold DLL functions and then create prototype methods by using managed code.

B. Register your assembly by using COM and then reference your managed code from COM.

C. Export a type library for your managed code.

D. Import a type library as an assembly and then create instances of COM object.

Answer: A


Q13: You are loading a new assembly into an application. You need to
override the default evidence for the assembly. You require the common
language runtime (CLR) to grant the assembly a permission set, as if the
assembly were loaded from the local intranet zone. You need to build the
evidence collection. Which code segment should you use?

A. Evidence evidence = new Evidence(Assembly.GetExecutingAssembly().Evidence);

B. Evidence evidence = new Evidence();
evidence.AddAssembly(new Zone(SecurityZone.Intranet));

C. Evidence evidence = new Evidence();
evidence.AddHost(new Zone(SecurityZone.Intranet));

D. Evidence evidence = new Evidence(AppDomain.CurrentDomain.Evidence);


Answer: C

Q14: You write the following code to implement the CompanyClass.MyMethod
function.

public class CompanyClass {
public int MyMethod(int arg) {
return arg; }}

You need to call the CompanyClass.MyMethod function dynamically from an
unrelated class in your assembly. Which code segment should you use?

A. CompanyClass myClass = new CompanyClass();
Type t = typeof(CompanyClass);
MethodInfo m = t.GetMethod("MyMethod");
int i = (int)m.Invoke(this, new object[] { 1 });

B. CompanyClass myClass = new CompanyClass();
Type t = typeof(CompanyClass);
MethodInfo m = t.GetMethod("MyMethod");
int i = (int) m.Invoke(myClass, new object[] { 1 });

C. CompanyClass myClass = new CompanyClass();
Type t = typeof(CompanyClass);
MethodInfo m = t.GetMethod("CompanyClass.MyMethod");
int i = (int)m.Invoke(myClass, new object[] { 1 });


D. Type t = Type.GetType("CompanyClass");
MethodInfo m = t.GetMethod("MyMethod");
int i = (int)m.Invoke(this, new object[] { 1 });


Answer: B

Implementing globalization, drawing, and text manipulation functionality in a .NET Framework application


Q1: You are developing an application for a client residing in Hong Kong.
You need to display negative currency values by using a minus sign. Which
code segment should you use?

A.   NumberFormatInfo culture = new CultureInfo("zh-HK").NumberFormat;
culture.NumberNegativePattern = 1;
return numberToPrint.ToString("C", culture);

B.   NumberFormatInfo culture = new CultureInfo("zh-HK").NumberFormat;
culture.CurrencyNegativePattern = 1;
return numberToPrint.ToString("C", culture);

C.   CultureInfo culture = new CultureInfo("zh-HK");
return numberToPrint.ToString("-(0)", culture);

D.   CultureInfo culture = new CultureInfo("zh-HK");
return numberToPrint.ToString("()", culture);


Answer: B

Q2: You are writing a method that accepts a string parameter named
message. Your method must break the message parameter into individual
lines of text and pass each line to a second method named Process.
Which code segment should you use?

A. StringReader reader = new StringReader(message);
Process(reader.ReadToEnd());
reader.Close();

B. StringReader reader = new StringReader(message);
while (reader.Peek() != -1) {
string line = reader.Read().ToString();
Process(line);}
reader.Close();

C. StringReader reader = new StringReader(message);
Process(reader.ToString());
reader.Close();

D. StringReader reader = new StringReader(message);
while (reader.Peek() != -1) {
Process(reader.ReadLine());}
reader.Close();

Answer: D

Q3: You are developing a fiscal report for a customer. Your customer has
a main office in the United States and a satellite office in Mexico.
You need to ensure that when users in the satellite office generate the
report, the current date is displayed in Mexican Spanish format. Which code
segment should you use?

A. DateTimeFormatInfo dtfi = new CultureInfo("es-MX", false).DateTimeFormat;
DateTime dt = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day);
string dateString = dt.ToString(dtfi.LongDatePattern);

B. Calendar cal = new CultureInfo("es-MX", false).Calendar;
DateTime dt = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day);
Strong DateString = dt.ToString();

C. string dateString = DateTimeFormatInfo.CurrentInfo
GetMonthName(DateTime.Today.Month);

D. string dateString = DateTime.Today.Month.ToString("es-MX");

Answer: A

Q4: You create an application that stores information about your
customers who reside in various regions. You are developing internal
utilities for this application. You need to gather regional information about
your customers in Canada. Which code segment should you use?

A. foreach (CultureInfo culture in CultureInfo.GetCultures(CultureTypes.SpecificCultures))
{
// Output the region information...
}

B. CultureInfo cultureInfo = new CultureInfo("CA");
 // Output the region information


C. RegionInfo regionInfo = new RegionInfo("CA");
// Output the region information

D. RegionInfo regionInfo = new RegionInfo("");
if(regionInfo.Name == "CA") {
// Output the region information
}

Answer: C

Q5: You need to generate a report that lists language codes and region
codes. Which code segment should you use?

A. foreach (CultureInfo culture in CultureInfo.GetCultures(CultureTypes.SpecificCultures)) {
// Output the culture information...
}

B. CultureInfo culture = new CultureInfo("");
CultureTypes types = culture.Culture Types;
// Output the culture information...

C. foreach (CultureInfo culture in
CultureInfo.GetCultures(CultureTypes.NeutralCultures)) {
// Output the culture information...
}

D. foreach (CultureInfo culture in CultureInfo.GetCultures(CultureTypes.ReplacementCultures)) {
// Output the culture information...
}

Answer: A

Q6: You are developing a method that searches a string for a substring.
The method will be localized to Italy.
Your method accepts the following parameters: The string to be searched,
which is named searchListThe string for which to search, which is named
searchValue You need to write the code. Which code segment should you
use?

A. return searchList.IndexOf(searchValue);

B. CompareInfo comparer = new CultureInfo("it-IT").CompareInfo;
return comparer.Compare(searchList, searchValue);

C. CultureInfo Comparer = new CultureInfo("it-IT");
if(searchList.IndexOf(searchValue) > 0) {
return true;
} else {
return false;}

D. CompareInfo comparer = new CultureInfo("it-IT").CompareInfo;
if (comparer.IndexOf(searchList, searchValue) > 0) {
return true;}
else {
return false;}

Answer: D

Q7: You are developing a utility screen for a new client application. The
utility screen displays a thermometer that conveys the current status of
processes being carried out by the application. You need to draw a
rectangle on the screen to serve as the background of the thermometer as
shown in the exhibit. The rectangle must be filled with gradient shading.
Which code segment should you choose?
Exhibit:



A. Rectangle rectangle = new Rectangle(10, 10, 450, 25);
LinearGradientBrush rectangleBrush = new LinearGradientBrush(rectangle, Color.AliceBlue, Color.CornflowerBlue, LinearGradientMode.ForwardDiagonal);
Pen rectanglePen = new Pen(rectangleBrush);
Graphics g = this.CreateGraphics();
g.DrawRectangle(rectanglePen, rectangle);

B. Rectangle rectangle = new Rectangle(10, 10, 450, 25);
LinearGradientBrush rectangleBrush = new LinearGradientBrush(rectangle, Color.AliceBlue, Color.CornflowerBlue, LinearGradientMode.ForwardDiagonal);
Pen rectanglePen = new Pen(rectangleBrush);
Graphics g = this.CreateGraphics();
g.FillRectangle(rectangleBrush, rectangle);


C. RectangleF rectangle = new RectangleF(10f, 10f, 450f, 25f);
Point[] points = new Point[] {new Point(0, 0), new Point(110, 145)};
LinearGradientBrush rectangelBrush = new LinearGradientBrush(rectangle, Color.AliceBlue, Color.CornflowerBlue, LinearGradientMode.ForwardDiagonal);
Pen rectanglePen = new Pen(rectangleBrush);
Graphics g = this.CreateGraphics();
g.DrawPolygon(rectanglePen, points);

D. RectangleF rectangle = new RectangleF(10f, 10f, 450f, 25f);
SolidBrush rectangleBrush = new SolidBrush(Color.AliceBlue);
Pen rectanglePen = new Pen(rectangleBrush);
Graphics g = this.CreateGraphics();
g.DrawRectangle(rectangleBrush, rectangle);


Answer: B